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)
当用户点击"返回","完成"等时隐藏它.但是作为数字键盘不允许您显示"完成"按钮.
我很感激你的帮助,谢谢大家的时间
尝试这个:
将文本字段委托及其返回类型设置为 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)