2015-08-06 24 views
6

UINavigationBar'ın başlık görünümüne eklenen bir UISearchBar örneğim var. Metin zaten orada ayarlanmış ve ortaya çıkan animasyon metni uzanıyor, her ne kadarUISearchBar, düzenlemeye başladığı zaman metni genişletiyor

enter image description here

altına gif gösterdi olarak arama çubuğu, bu İptal düğmesi için boşluk sağlamak için içeriğini boyutlandırır düzenlerken başlar edildiğinde var mı Bu hatasını önlemek için yapılabilecek her şey hatası? Metni çıkarmaya çalıştım ve daha sonra birkaç dakika sonra tekrar eklemek için çalıştım, ancak bu zarif bir çözüm değil.

Güncelleme @ dayanarak


Ben Cancel düğmeye animasyon tahmin çalıştı ve onu kötü görünmüyor Paruru cevabı. Ne yaptım sonuçta searchBarShouldBeginEditing:

extension SearchViewController: UISearchBarDelegate { 

    func searchBarShouldBeginEditing(searchBar: UISearchBar) -> Bool { 
     if searchBar.text?.isEmpty == false { 
      // This avoids the text being stretched by the UISearchBar. 
      searchBar.setShowsCancelButton(true, animated: true) 
     } 
     return true 
    } 

} 

üzerinde Cancel düğmeye sunumunu zorlamak olduğunu ben başarmak istediğim şey, metin olmadan animasyon gerildikten. Bunun bir geçici çözüm olduğunu düşünüyorum ve bu nedenle bu kodun gelecekteki kanıtı olmayacağı için diğer yanıtları bekleyeceğim.

+1

Güncellenmiş olan çözümünüz harika çalışıyor, yanıt olarak göndermelisiniz, böylece onu destekleyebilirim! –

+0

HI Alex, Bir hack olduğu için doğru cevabı yapmak istemiyorum ve iOS'un daha yeni sürümlerine zarar verebilir, bu da animasyon sorununu çözebilir. – vfn

cevap

1
- (void)setShowsCancelButton:(BOOL)showsCancelButton animated:(BOOL)animated NS_AVAILABLE_IOS(3_0); 

Sadece animasyon olmadan yöntemi çağırın. o İptal düğmesine sola animasyonlu olmaktan "Ara" yer tutucu durur hariç

if (!self.isShowCancelBtn) { 
    [self.searchBar setShowsCancelButton:YES animated:NO]; 
    self.isShowCancelBtn = YES; 
}else{ 
    [self.searchBar setShowsCancelButton:NO animated:NO]; 
    self.isShowCancelBtn = NO; 
} 
+1

Bu, düğmeyi arama çubuğuna girip çıkarır ve elde etmek istediğim şey bu değil. Yukarıda bahsettiğim bir çalışma buldum. Ne aradığım başka bir bandaid çözüm değil bir çözümdür – vfn

2

Güncellenen çözüm metin varken görünür, iyi çalışıyor. searchBar.text Denetleme animasyon geri yükler:

func searchBarShouldBeginEditing(searchBar: UISearchBar) -> Bool { 
    // This avoids the text being stretched by the UISearchBar. 
    if searchBar.text?.isEmpty == false { 
     searchBar.setShowsCancelButton(true, animated: true) 
    } 
    return true 
} 

Bu sadece Minimal UISearchBarStyle için bir sorun olabilir şüpheli.

+0

Teşekkürler Alex! Önerinizi ekleyerek soruyu güncelleyeceğim. – vfn

+0

yerine "searchBar.text? .isEmpty == false' use'! SearchBar.text? .isEmpty' – SDJMcHattie