我只是想知道在iphone应用程序中隐藏键盘哪种方法更好
1>实施
- (IBAction) doneButtonOnKeyboardPressed: (id)sender
{
}
Textfield的退出事件结束时的方法
OR
在Textfield中实现此
-(BOOL)textFieldShouldReturn:(UITextField *)theTextField {
[txtName resignFirstResponder];
return YES;
}
哪种选择最好选择哪种情况......?任何一个选项都优于其他选项......?
答案 0 :(得分:1)
我非常喜欢通过响应UIControlEventDidEndOnExit
事件来使用目标/操作模式,通常是通过将IB中显示的“End End On Exit”事件连接到文件所有者,在Interface Builder中连接它,使用我选择的方法。这将是您展示的第一个选项。
这就是为什么我更喜欢这种机制:
很多应用程序(好吧,至少我的应用程序),有必要区分取消输入,例如,通过触摸文本字段外部,以及通过完成按钮完成输入键盘(文档倾向于将此称为“返回”按钮)。因为-textFieldDidEndEditing
委托方法在字段为第一响应者时(无论结束编辑的原因如何)在任何时候调用 -resignFirstResponder
,所以必须有一个变量在哪里跟踪你如何终止编辑的路径。这引入了一定程度的复杂性,而这并非必要。
在我的应用中,我会回复UITextField
之外的触摸事件,调用-resignFirstResponder
取消编辑而不采取进一步操作。如果我使用委托方法,我需要在这里设置状态来记录我在我的代码中使用'cancel'路径,并使用-textFieldShouldReturn
委托方法来设置状态以指示我要去通过我的代码的“完成”路径,并调用-resignFirstResponder
。凌乱。
在此处使用目标/操作模式可以实现更简单,更清晰的代码。
答案 1 :(得分:0)
功能相同,一个是从控件“textfield”处理,另一个是与键盘委托相关。你为什么要处理键盘?我建议从你的控件处理它......
答案 2 :(得分:0)
-(BOOL)textFieldShouldReturn:(UITextField *)theTextField {
[txtName resignFirstResponder];
return YES;
}
以上方法是最好的 - 你只需要选择你的任何textFields&在连接检查器中 - 将文件所有者连接到textFields的委托。这将使你的事情发挥作用。