告诉任何 UITextField 关闭
Posted
技术标签:
【中文标题】告诉任何 UITextField 关闭【英文标题】:Tell any UITextField to dismiss 【发布时间】:2011-01-31 14:28:52 【问题描述】:如何将当前的firstResponder
告诉resign
?我有一个UITableView
和一堆TextFields
,我不知道哪个始终处于活动状态。我考虑过存储指向数组中所有单元格的指针并遍历它,将每个单元格告诉resignFirstResponder
,但我确信有一种更简单的方法。也许像[CurrentFirstResponder resignFirstResponder]
这样的东西?
我会很感激你的帮助,法比安
编辑:我不想在用户点击完成时关闭键盘。它应该以编程方式被解雇。由于我不知道哪个UITextField
在任何时候都处于活动状态,因此我正在搜索当前FirstResponder
上调用resignFirstResponder
的东西。
【问题讨论】:
【参考方案1】:您可以在UITextFieldDelegate Protocol 上使用textFieldDidBeginEditing:
保留对正在积极编辑的 UITextfeild 的引用,或者您可以使用父视图执行此操作:
UIView * myParentViewView;//view containing one or more editable UI controls
[myParentViewView endEditing:YES];
【讨论】:
刚才也想出来了 :) 问题是我的UITextField
包含在自定义 UITableViewCell
中,但我添加了一个新的委托方法,将 - (void)textFieldDidBeginEditing:(UITextField *)tf
发送给委托。然后我有一个实例变量......【参考方案2】:
希望这能解决你的问题,
将委托分配给 UItextField,
textField.delegate=self;
然后在下面的方法中
- (void)textFieldDidBeginEditing:(UITextField *)textField
//This for to resign on begin editing
[textField resignFirstResponder];
- (void)textFieldDidEndEditing:(UITextField *)textField
//This for to resign on end editing
[textField resignFirstResponder];
如果您不希望 textField 可编辑,那么,
textField.editing=NO;
设置标签以区分您的文本字段
【讨论】:
【参考方案3】:只需使用 UITextFieldDelegate (reference)。每当调用- (BOOL)textFieldShouldReturn:(UITextField *)textField
时,执行[textField resignFirstResponder]
,因为此方法总是使用当前活动的文本字段调用。
如果您仍然需要区分文本字段,请尝试设置标签并将其与 if(textfield.tag == self.mytextfield.tag) ...
一起使用
【讨论】:
以上是关于告诉任何 UITextField 关闭的主要内容,如果未能解决你的问题,请参考以下文章