0

我正在尝试在 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,但键盘没有消失。

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

4

2 回答 2

1

辞职文本字段的发件人而不是您的实例。UITextField *textField不是 IBOutlet (故事板)或在代码中创建的,所以textField是 nil (除非您在其他地方创建它并且没有显示代码)。

- (BOOL)textViewShouldReturn:(id)sender {
     NSLog(@"Entering in textViewShouldReturn ");
    [sender resignFirstResponder];
    return YES;
}
于 2013-10-25T18:00:10.753 回答
0

你有没有从 stroyboard 在你的 RNViewController 中设置文本字段委托。这可能是键盘不隐藏的原因。

于 2013-10-25T18:07:26.953 回答