无法在iOS中隐藏键盘

时间:2013-10-25 17:57:22

标签: ios iphone keyboard hide

我试图在iOS应用中隐藏键盘。我已经花了几个小时寻找它,而且我已经尝试了很多东西,所以我非常绝望。

我的代码如下:

RNViewController.h

@interface RNViewController : UIViewController <UITextFieldDelegate> {
     UITextField *textField;
...
}

RNController.m

- (void)viewDidLoad {
    textField.delegate = self;
    textField.returnKeyType = UIReturnKeyDone; 
}

- (BOOL)textFieldShouldReturn:(id)sender {
    NSLog(@"Entering in textFieldShouldReturn ");
    [textField resignFirstResponder];
    return YES;
}

- (BOOL)textViewShouldReturn:(id)sender {
     NSLog(@"Entering in textViewShouldReturn ");
    [textField resignFirstResponder];
    return YES;
}

- (IBAction)textFieldDoneEditing:(id)sender {
        NSLog(@"Entering in textFieldDoneEditing ");
        [sender resignFirstResponder];
}

- (IBAction)textViewDoneEditing:(id)sender {
     NSLog(@"Entering in textViewDoneEditing ");
    [sender resignFirstResponder];
}


- (BOOL)disablesAutomaticKeyboardDismissal {
    return NO;
}

编辑:textField是以这样的方式创建的:

- (void) showPreguntaTexto: (Pregunta *) pregunta {
    UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(CGRectGetWidth(baseView.bounds)*0.1, offset + CGRectGetWidth(baseView.bounds)*0.05, CGRectGetWidth(baseView.bounds) - CGRectGetWidth(baseView.bounds) * 0.2 , CGRectGetWidth(baseView.bounds)*0.5)];

    textField.delegate = self;

    [vistaAnterior addSubview:textField];
}

我的观点是baseView(包含不变的元素)和vistaAnterior,它包含内容(和textField)和更改。

试试这个,它显示输入到textFieldShouldReturn,但键盘不会消失。

为什么会这样?请帮忙!!

2 个答案:

答案 0 :(得分:1)

辞退文本字段的发件人而不是您的实例。 UITextField *textField不是IBOutlet(故事板)或是在代码中创建的,因此textField为零(除非您在其他地方创建它并且未显示代码)。

- (BOOL)textViewShouldReturn:(id)sender {
     NSLog(@"Entering in textViewShouldReturn ");
    [sender resignFirstResponder];
    return YES;
}

答案 1 :(得分:0)

您是否从故事板中在RN ViewController中设置了文本字段委托。这可能是键盘无法隐藏的原因。