[英]UITextField strange behaviour on resignFirstResponder
已經是第二天了,無法解決問題,
我已經UITabelView
使用自定義UICellViews
,每個自定義UICellView
組成UILabel
和UITextField
。
自定義UICellView
對象在其init
方法中分配UITextField
和UILabel
,並在dealloc
中釋放。
UITableView
的自定義UICellViews
數量為6。
用戶場景如下
UITextFields
並輸入一些文本 UITextField
時,應將其隱藏,如果隱藏,則不應顯示。 在我的UIViewController
類中實現UITextFieldDelegate
協議,並將每個UITextField
的委托設置為self。
我的委托方法如下
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
if (textField.tag != 6) {
return YES;
} else {
[textField resignFirstResponder];
return NO;
}
}
-(BOOL) textFieldShouldEndEditing:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
-(void) textFieldDidBeginEditing:(UITextField *)textField {
/* Some code */
}
-(void) textFieldDidEndEditing:(UITextField *)textField
{
[textField resignFirstResponder];
}
所有功能都正常!
所以現在,虛擬鍵盤永遠不會被隱藏,為什么會發生這種情況?
PS。 類似的代碼已在iPhone上運行,但此問題在iPad上存在。
您需要知道最后使用哪個文本字段! 因此您可以執行[lastUsedTextField resignFirstResponder]
有一個骯臟但可行的技巧..您可以將文本字段設置為新的活動UITextField,並在下一個周期立即調用resignFirstResponder:
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
if (textField.tag != 6) {
return YES;
} else {
// this will schedule keyboard dismissal for the current text field
dispatch_async(dispatch_get_main_queue(), ^{
[textField resignFirstResponder];
});
return YES; // -> make this one active
}
}
您是否為textField設置了操作?
[YourTextField addTarget:self action:@selector(textFieldDoneEditing:) forControlEvents:UIControlEventEditingDidEndOnExit];
PS為任何ControlEvent設置任何選擇器
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.