resignFirstResponder不工作?

时间:2011-07-28 02:52:39

标签: objective-c ios ipad resignfirstresponder

我尝试在iPad上隐藏键盘,但我不知道为什么resignFirstResponder不起作用。 但popToRoot运作良好。

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{
    NSString *desc = [NSString stringWithFormat:@"%@",[descTF text]];
    [textField resignFirstResponder];
    [self.navigationController popToRootViewControllerAnimated:YES];


    return YES;
}

所以,你能指导我,我该怎么办?

5 个答案:

答案 0 :(得分:19)

此字段是否在UIModalPresentationFormSheet内?如果是这样,那么在视图控制器被解除之前,您无法以编程方式解除键盘问题。

更新:根据Apple Developer论坛的this thread,可能的解决方法是从实现disablesAutomaticKeyboardDismissal方法的导航控制器子类内部显示工作表视图控件。如下所示:

MyViewController *myViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
CustomNavigationController *navController = [[CustomNavigationController alloc] initWithRootViewController:myViewController];
theNavigationController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:theNavigationController animated:YES];

答案 1 :(得分:7)

要跟进samvermette的回答,如果它在UIModalPresentationFormSheet内,您现在可以覆盖disablesAutomaticKeyboardDismissal方法以获得您想要的行为。将以下方法添加到您的班级,UITextFieldsUITextViews将响应resignFirstResponder。

- (BOOL)disablesAutomaticKeyboardDismissal {
    return NO;
}

答案 2 :(得分:1)

您永远不应该有机会发送-resignFirstResponder。您应该做的只是将-endEditing:YES发送到相关视图。

答案 3 :(得分:0)

您是否实施了UITextFieldDelegate?如果你已经实现了那个,那么它应该可以工作。

答案 4 :(得分:0)

(道歉......这是StackOverflow网站上第四个我发布此修复程序的地方..)

我在XCode 5& amp; iOS 7,试图隐藏屏幕键盘。

最终,我找到了一个非常简单的解决方案:我刚刚在表单中禁用了UITextFields。奇怪的是,这足以让屏幕键盘滑落。

更多详情here

令人惊讶的是,这甚至适用于Modal UIViewControllers。是的,它让我感到惊讶!!