可能重复:
How to make return key on iphone make keyboard disappear?
我正在处理的页面中有两个文本字段。单击返回后,只有第一个文本字段消失,但它不适用于第二个文本字段。
以下是我的.m文件中的方法:
-(void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
self.cardNameTextField.delegate = self;
self.pinTextField.delegate = self;
}
-(BOOL) textFieldShouldReturn:(UITextField *)textField
{
if (_cardNameTextField !=nil)
{
[self.cardNameTextField resignFirstResponder];
}
else if (_pinTextField !=nil)
{
[self.pinTextField resignFirstResponder];
}
return YES;
}
建议请:)
答案 0 :(得分:5)
将上述代码替换为此代码并尝试它是否有帮助:
-(BOOL) textFieldShouldReturn:(UITextField *)textField{
if ([_cardNameTextField isEditing]) {
[self.pinTextField resignFirstResponder];
}
if ([_pinTextField isEditing]) {
[self.cardNameTextField resignFirstResponder];
}
return YES;
}
答案 1 :(得分:1)
确保您已设置文本字段的委托。
答案 2 :(得分:1)
您的代码存在的问题是,您正在检查UITextField
是否nil
,nil
不等于-(BOOL) textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
。因此,无论何时检查条件,它总是进入第一种情况并返回(另一种情况在其他情况下)。以下方案也适用:
-(BOOL) textFieldShouldReturn:(UITextField *)textField{
if (_cardNameTextField == textField)
{
[self.cardNameTextField resignFirstResponder];
}
else if (_pinTextField == textField)
{
[self.pinTextField resignFirstResponder];
}
return YES;
}
或强>
else
或强>
在第二种情况下,只需删除Do it @Neelam Verma's way.
关键字。
或强>
{{1}}
我会建议第一种情况迫使第一响应者辞职而不检查任何条件......
答案 3 :(得分:0)
使用委托 UITextFieldDelegate
在您的实现类中,您有两个步骤:
设置代理
self.textField.delegate = self;
实施此方法
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
答案 4 :(得分:0)
当用户点击文本键盘上的“完成”按钮时,“结束时退出” 将生成事件,并且在那时,我们需要告诉文本字段放弃控制 这样键盘就会消失。为此,我们需要添加一个动作方法 到我们的控制器类。 怎么样:
在你的。 h:
- (IBAction)textFieldDoneEditing:(id)sender;
你的.m中的:
- (IBAction)textFieldDoneEditing:(id)sender {
[sender resignFirstResponder];
}
答案 5 :(得分:0)
这可能会对你有帮助!
- (void) textFieldDidEndEditing:(UITextField *) textField
{
[textField2 resignFirstResponder];
}