iOS - 如何解雇键盘?

时间:2013-12-01 00:00:01

标签: ios objective-c cocoa-touch uiview uikeyboard

在我的应用程序中,我按下一个按钮,它会拉出一个模态演示文稿表(适用于iPad)。在这个模态视图中,我在主视图中有一个滚动视图,在滚动视图中有一个文本字段。

view controller
    view
        scrollview
            text field

我没有尝试过调整键盘,我不知道为什么。唯一发生的事情就是文本域中闪烁的光标消失了。我的类是scrollview和text字段的委托。这是我尝试过的:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    [self.titleTextField resignFirstResponder];
    [self.titleTextField endEditing:YES];
    [self.view endEditing:YES];
    [self.view resignFirstResponder];
    [self.scrollView endEditing:YES];
    [self.scrollView resignFirstResponder];
}

该方法确实被调用,但键盘不会消失。任何人都可以帮助我,或者至少告诉我为什么?

以下是我如何呈现此模态演示视图:

(它来自tableviewcontroller)

didSelectRowAtIndexPath方法

EditVideo *targetController = [self.storyboard instantiateViewControllerWithIdentifier:@"editVideo"];

        targetController.delegate = self;

        UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:targetController];

        navigationController.modalPresentationStyle = UIModalPresentationFormSheet;

        [self presentViewController:navigationController animated:YES completion:nil];

        [self.tableView deselectRowAtIndexPath:indexPath animated:YES];

1 个答案:

答案 0 :(得分:4)

在任何非全屏显示的ViewController的iPad上,您必须实现-(BOOL)disablesAutomaticKeyboardDismissal才能返回NO以关闭键盘。

- (BOOL)disablesAutomaticKeyboardDismissal
{
    return NO;
}

实施后,您可以致电[self.view endEditing:YES];

编辑: 此问题的另一个常见原因是从NO返回- (BOOL)textFieldShouldEndEditing:(UITextField *)textField。在UITextFieldDelegate中实现该方法并让它无条件地返回YES以证明它不是一个因素。