【发布时间】:2011-10-21 19:39:18
【问题描述】:
我看过很多关于如何在按下回车键或操作某些按钮时隐藏键盘的示例。
但我的情况不同:如何在 TextField 外部单击时关闭键盘?想象一下,用户点击了一个 TextField 来输入一些文本......但他很遗憾,只想隐藏键盘并像在文本字段中点击之前一样继续查看屏幕
我不知道怎么做
提前致谢
佩德罗
【问题讨论】:
我看过很多关于如何在按下回车键或操作某些按钮时隐藏键盘的示例。
但我的情况不同:如何在 TextField 外部单击时关闭键盘?想象一下,用户点击了一个 TextField 来输入一些文本......但他很遗憾,只想隐藏键盘并像在文本字段中点击之前一样继续查看屏幕
我不知道怎么做
提前致谢
佩德罗
【问题讨论】:
实现 touchesBegan 并将文本字段作为第一响应者。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[activeTextField resignFirstResponder];
}
如果您有多个文本字段,您应该在 activeTextField 实例变量中存储一个指向当前活动字段的指针。为此,您必须将 self 设置为所有文本字段的委托并实现此委托方法:
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
activeTextField = textField;
}
【讨论】:
试试这个代码。
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent*)event
{
UITouch *touch = [touches anyObject];
if([touch view] == self.view)
[textField resignFirstResponder];
}
【讨论】:
if([touch view] == self.view),因为他希望文本字段之外的所有触摸都关闭键盘,如果用户触摸文本字段(或处理触摸本身的其他元素)。
您可以在外部事件的修饰上进行 rasignfirstresponder。
否则看看这个答案
iphone, dismiss keyboard when touching outside of UITextField
【讨论】: