如何在按下返回键时取消数字键盘

10 浏览
0 Comments

如何在按下返回键时取消数字键盘

不起作用...

0
0 Comments

问题原因:在iOS 7.1中,如果键盘类型为数字键盘,则textFieldShouldReturn:方法不会被调用。

解决方法:可以使用UITextField的inputAccessoryView属性来添加一个自定义的视图作为键盘的附属视图,然后在自定义视图中添加一个按钮,点击按钮时调用resignFirstResponder方法来隐藏键盘。

具体代码如下:

- (void)viewDidLoad {
    [super viewDidLoad];
    
    UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(50, 50, 200, 30)];
    textField.borderStyle = UITextBorderStyleRoundedRect;
    textField.delegate = self;
    textField.keyboardType = UIKeyboardTypeNumberPad;
    textField.returnKeyType = UIReturnKeyDone;
    textField.inputAccessoryView = [self createInputAccessoryView];
    [self.view addSubview:textField];
}
- (UIView *)createInputAccessoryView {
    UIView *inputAccessoryView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
    inputAccessoryView.backgroundColor = [UIColor lightGrayColor];
    
    UIButton *dismissButton = [UIButton buttonWithType:UIButtonTypeSystem];
    dismissButton.frame = CGRectMake(inputAccessoryView.frame.size.width - 70, 0, 70, 44);
    [dismissButton setTitle:@"Done" forState:UIControlStateNormal];
    [dismissButton addTarget:self action:@selector(dismissKeyboard) forControlEvents:UIControlEventTouchUpInside];
    [inputAccessoryView addSubview:dismissButton];
    
    return inputAccessoryView;
}
- (void)dismissKeyboard {
    [self.view endEditing:YES];
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return NO;
}

以上代码中,通过设置UITextField的inputAccessoryView属性来添加一个自定义的视图作为键盘的附属视图。在自定义视图中,添加一个按钮,并设置按钮的点击事件为dismissKeyboard方法,该方法通过调用[self.view endEditing:YES]来隐藏键盘。在textFieldShouldReturn:方法中也调用了[textField resignFirstResponder]来隐藏键盘。

0