2012-07-07 16 views
7

Girilen her harfle (ve reloadData'yı çağır) tabloViewSourceSource değerini değiştirmek için ayarlanmış bir textField var.UITableView reloadData, UITextField'ın resignFirstResponder'a neden oluyor

Ancak bazı nedenlerle, her harf girildiğinde, klavye kapatılır.

Neden olduğunu bilen var mı?

+1

Metin alanınızın ve diğer ilgili yöntemlerin düzenlenmesini başlatmak için yöntemlerin bazı kodlarını gönderin, sorunun ne olduğunu göremiyorsak size yardımcı olamayız. – 8vius

+1

[UITableView reloadData ilk yanıtlayanı yeniden sorar] olası bir kopyası (http://stackoverflow.com/questions/6409370/uitableview-reloaddata-resigns-first-responder) – CodaFi

+0

@CodaFi'yi çivilemeniz gerekir. TextField, tablonun üst kısmındaki özel bir hücrede idi, bu yüzden yeniden reloadData olduğunda, o hücreyi de yeniden yükler ve böylece içindeki herhangi bir şeyi istifa eder. TEŞEKKÜR EDERİM!!! –

cevap

10

Yeniden doldurulmuş hücreler, bir yeniden yüklendikten sonra hayatta kalmalarının garanti edilmemesi nedeniyle bir -resignFirstResponder iletisine gönderildiğinden, metin alanınız istifa ediyor. Daha fazla bilgi için bu related soruya bakın.

+0

Güzel bir çözüm, görünüme gizli bir metin alanı ekliyor ve tabloyu yeniden yüklerken odağı bu metin alanına geçiriyor. Tablo yeniden yüklendikten sonra, bu klavyeyi açık tutmak için odağı orijinal metin alanınıza geri döndürebilirsiniz. [self.fakeTextField beFirstResponder]; [self.tableView reloadData]; [self.textField performSelector: @selector (becomeFirstResponder) withObject: nil afterDelay: .01]; – hobosf

-3

Bu yöntemi textFieldShouldReturn: kullanın ve UITextFieldDelegate delegesiniClass.h dosyanıza ekleyin. Temsilcinizi kendi alanınıza ayarlayın ve viewDidLoad yönteminde aşağıdaki kodu yazın.

yourTextfield.delegate = self;

ve

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField { 

     [theTextField resignFirstResponder]; 

    return YES; 
} 

olarak şu şekilde de textFieldShouldReturn: uygulamak Bunun sana yardımcı olacağını düşünüyorum.