在iOS中无法隐藏键盘

Ole*_*leg 5 cocoa-touch objective-c ios

我的应用有一个导航控制器.我的所有控制器都弹出并推送.一个控制器有12个文本字段.2个文本字段调用其他控制器.这是一个UIDatePicker然后使用委托方法我们在这两个字段中设置当前日期.

  - (IBAction) beginEditingDateStart:(id) sender{
[sender resignFirstResponder];

[self.remedyName becomeFirstResponder];
[self.remedyName resignFirstResponder];
[self.doseName resignFirstResponder];
[self.count resignFirstResponder];
[self.dateFrom resignFirstResponder];
[self.dateTill resignFirstResponder];
[self.doseAmount resignFirstResponder];

[self.view endEditing:NO];
[self.view resignFirstResponder];
    DatePickerViewController *dateView = [[DatePickerViewController alloc] initWithNibNameAndKey:@"DatePickerViewController" bundle:[NSBundle mainBundle] key:@"from"];
dateView.delegate = self;
[self.navigationController pushViewController:dateView animated:YES];
[dateView release];
Run Code Online (Sandbox Code Playgroud)

问题是,当我开始编辑这两个字段并且键盘处于活动状态时,我们使用键盘转到datepicker控制器,它隐藏了我的日期选择器.我知道这个问题可以解决,但我不知道如何.请帮我.

Pau*_*l.s 13

这将要求每个视图辞职第一响应者.

[self.view endEditing:YES];
Run Code Online (Sandbox Code Playgroud)

因为这将要求每个视图辞职第一响应者所有其他呼叫辞职第一响应者是多余的.应该删除它们,以减少不正确地调用某些内容或者将其调出或转过来的风险

[self.remedyName becomeFirstResponder];
Run Code Online (Sandbox Code Playgroud)

您可以在Apple Docs中阅读更多相关信息


Mor*_*ast 0

可能是这一行引起了麻烦:

[self.remedyName becomeFirstResponder];
Run Code Online (Sandbox Code Playgroud)

否则,您可以执行以下操作来确保所有视图都已放弃第一响应者:

- (void)resignFirstResponderForSubviewsOfView:(UIView *)aView {

    for (UIView *subview in [aView subviews]) {

        if ([subview isKindOfClass:[UITextField class]] || [subview isKindOfClass:[UITextView class]])
            [(id)subview resignFirstResponder];

        [self resignFirstResponderForSubviewsOfView:subview];
    }
}
Run Code Online (Sandbox Code Playgroud)

然后从视图控制器中这样调用它:

[self resignFirstResponderForSubviewsOfView:[self view]];
Run Code Online (Sandbox Code Playgroud)