我将视图控制器呈现为模态。这个视图控制器有几个通过 IB 连接的 UITextFields。
我的问题是当点击返回键时,委托方法被调用,但由于某种原因,在给定的 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,谢谢你的问题。