弹出viewcontroller iOS时键盘会短暂出现

Lui*_*ano 5 keyboard objective-c uiviewcontroller ios

当我从UINavigationController弹出当前的UIViewController时,我正在尝试使用数字键盘的问题.

在我当前的UIViewController中.我在UINavigationBar中有一些UITextField和一个"保存"按钮.预期的行为如下:

当用户点击"保存"时,键盘必须隐藏并执行网络操作.在其回调中,显示了UIAlertView.当用户解除此UIAlertView时,会发出通知并且当前的UIViewController会执行

[self.navigationController popViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)

问题是,如果在键盘仍然显示的情况下按下"保存",则在执行popViewControllerAnimated之后,键盘会从左到右短暂出现(就好像它在之前的UIViewController中可见).

我试过了

[myTextField resignFirstResponder]
Run Code Online (Sandbox Code Playgroud)

当用户点击"保存"时,当用户关闭UIAlertView时,甚至在用户中

viewWillDisappear 
Run Code Online (Sandbox Code Playgroud)

方法.其他一些答案建议使用

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

但它也不起作用.

如果我可以使用常规键盘,那么覆盖它将是微不足道的

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];

    return YES;
}
Run Code Online (Sandbox Code Playgroud)

当用户点击"返回","完成"等时隐藏它.但是作为数字键盘不允许您显示"完成"按钮.

我很感激你的帮助,谢谢大家的时间

Tej*_*uri 1

尝试这个:

将文本字段委托及其返回类型设置为 Done,并将键盘设置为数字键盘。

  _textField.delegate = self;
_textField.keyboardType = UIKeyboardTypeDecimalPad;
[_textField setReturnKeyType:UIReturnKeyDone];
Run Code Online (Sandbox Code Playgroud)

现在将按钮添加到键盘:

    -(void)addButtonsToKeyboard
{
    UIToolbar* keyboardDoneButtonView = [[UIToolbar alloc] init];
    [keyboardDoneButtonView sizeToFit];


    UIBarButtonItem* doneButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Done", nil)
                                                                   style:UIBarButtonItemStyleDone target:self
                                                                  action:@selector(kbDoneAction:)];

    UIBarButtonItem* seperatorItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];


    UIBarButtonItem* cancelButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Cancel", nil)
                                                                     style:UIBarButtonItemStylePlain target:self
                                                                    action:@selector(kbCancelAction:)];


    [keyboardDoneButtonView setItems:[NSArray arrayWithObjects:cancelButton,seperatorItem, doneButton, nil]];
    _textField.inputAccessoryView = keyboardDoneButtonView;
}
Run Code Online (Sandbox Code Playgroud)

并隐藏键盘:

    - (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

您的完成操作方法是:

    -(void)kbDoneAction:(id)sender
{
    [_textField resignFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)

取消操作方法是:

    -(void)kbCancelAction:(id)sender
{
[_textField resignFirstResponder];
    }
Run Code Online (Sandbox Code Playgroud)