我将视图控制器作为模态呈现。该视图控制器有几个通过IB连接的UITextField。
我的问题是,当按下返回键时,会调用委托方法,但由于某种原因,在给定的textField上调用resignFirstResponder不是。即使我在textFieldShouldReturn委托方法中向控制台打印一条消息,它也会被打印出来,但它只会拒绝调用resign方法。
在shouldReturn委托方法中,我只有:
-(BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
这在我之前从未发生过,它只是简单地不会resignFirstResponder。正如我之前提到的,我可以将一个打印件放到控制台上,只是为了验证是否会调用shouldReturn方法。
我也尝试过这只是为了查看是否已设置委托,并确实更改了UITextField行为。
-(void)textFieldDidBeginEditing:(UITextField *)textField {
[textField setTextAlignment:UITextAlignmentCenter];
}
这个问题真让我感到困惑。即使我试图直接在文本字段上调用resignFirstResponder,它也不会解雇键盘。
-(BOOL)textFieldShouldReturn:(UITextField *)textField {
if ([textField isEqual:self.productTextField]) {
NSLog(@"Product textfield");
[self.productTextField resignFirstResponder];
} else if ([textField isEqual:self.quantityTextField]) {
NSLog(@"Quantity textfield");
}
return YES;
}
两个日志都使用各自的文本字段并分别打印相应的消息。但是直接在文本字段中发送消息时调用该方法仍然无效。
找到答案,显然,UIPresentationFormSheet不允许你摆脱键盘。我尝试了不同的演示风格,它的工作原理。 @Cal,谢谢您的question。
答案 0 :(得分:4)
我认为你需要在textFieldShouldReturn方法中明确写出[textField resignFirstResponder];
。
如果你已经这样做了,也许这绝对是奇怪的。你能发布你的代码吗? :)