我有四个UITextField,并且每个都与.h文件中的插座相关联。我还为每个文本字段定义了4个解除函数,如下所示:
- (IBAction)dismiss1:(id)sender;
- (IBAction)dismiss2:(id)sender;
- (IBAction)dismiss3:(id)sender;
- (IBAction)dismiss4:(id)sender;
@property (strong, nonatomic) IBOutlet UITextField *name;
@property (strong, nonatomic) IBOutlet UITextField *email;
@property (strong, nonatomic) IBOutlet UITextField *weight;
@property (strong, nonatomic) IBOutlet UITextField *age;
在.m文件中实现dismiss函数:
- (IBAction)dismiss1:(id)sender {
[sender resignFirstResponder];
}
- (IBAction)dismiss2:(id)sender {
[sender resignFirstResponder];
}
...
我非常确定插座是否正确连接到每个UITextFiled。每个解雇功能的IBAction也与“编辑结束”相关联。相应的事件。但是,当我使用模拟器运行应用程序时,当我点击“输入/完成”时,键盘不会被忽略。同样非常奇怪的是,当我将断点放在解散功能中时,点击'输入'在相应的UITextField中键入时不会调出调试器。
非常感谢你的帮助!
更新:我使用断点检查了发件人的对象类型(dismiss1),并检查了UITextFiled。但是,当我点击“输入”时,我没有进入调试模式。在第一个TextField中,但是当我单击第二个TextField(在键入之前)时进入调试模式。
答案 0 :(得分:1)
使用代码重新签名keyBoard而不指定textFiled name。
- (IBAction)dismiss1:(UITextField*)sender {
[self.view endEditing:true];
// or use [sender resignFirstResponder];
}
答案 1 :(得分:1)
设置UITextFielDelegate
textfieldname.delegate = self;
使用此代码可解决您的问题
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
答案 2 :(得分:1)
添加文本字段委托
name.delegate = self;
email.delegate = self;
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
答案 3 :(得分:0)
无需为textfield创建四个操作
您可以设置Textfield的委托并使用以下方法
- (void)textFieldDidEndEditing:(UITextField *)textField
在此方法中,您可以将文本字段与返回文本字段的方法进行比较,并在&#34中完成任务;如果"条件
希望它对你有帮助!!
答案 4 :(得分:0)
当文本字段失去"焦点"时调用Editing did end
,意味着它不再是第一个响应者(因为它已经辞职或另一个成为第一响应者)。 / p>
使用textFieldShouldReturn
检测何时调用返回键。
在调用此字段时调用texfield上的resignFirstResponder
。之后将发生Editing did end
事件。
编辑:你必须实现一些东西(你的ViewController?)作为文本域的委托。
答案 5 :(得分:0)
将标记分配给不同的文本字段 然后>
textfield.delegate = self;
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
if(textfield.tag==num)
{
[textField resignFirstResponder];
}
return YES;
}