Отключить клавиатуру текстового поля программно

#iphone #objective-c #keyboard #textfield #resignfirstresponder

#iPhone #objective-c #клавиатура #текстовое поле #первый ответчик

Вопрос:

Я знаю, как использовать следующий метод с помощью Interface Builder.

 -(void)dismissKeyboard 
{
    [testTextField resignFirstResponder];
}
  

Таким образом, когда я касаюсь области за пределами клавиатуры или нажимаю «возврат», клавиатура отключается.

Но я не знаю, как сделать все это с помощью кода. Пожалуйста, научите меня, спасибо.

Вот .h

 #import <UIKit/UIKit.h>

@interface SecondViewController : UIViewController 
{
    UITextField *testTextField;
}

@property (nonatomic,retain) UITextField *testTextField;
@end
  

вот .m

 #import "SecondViewController.h"
@implementation SecondViewController 
@synthesize testTextField;

- (void)viewDidLoad
{
    [super viewDidLoad];    

    UITextField *tempTextField = [[UITextField alloc] init];
    self.testTextField = tempTextField;
    testTextField.frame = CGRectMake(100, 150, 200, 30);
    testTextField.placeholder = @"Test";
    testTextField.backgroundColor = [UIColor whiteColor];
    testTextField.textColor = [UIColor blackColor];
    [self.view addSubview:testTextField];

}
  

Комментарии:

1. Вы не установили делегат.. [tempTextField setDelegate:self];

2. @DefenestrationDay ваш правильный ответ!

Ответ №1:

Чего вам не хватает UITextFieldDelegate , так это множества методов текстового поля, которые будут вызываться по разным причинам.

Ознакомьтесь с документами Apple! http://developer.apple.com/library/ios/#documentation/uikit/reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html

Вы должны отказаться от своей клавиатуры в

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

Ответ №2:

используйте этот код в viewdidload

  UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)];
[self.view addGestureRecognizer:gestureRecognizer];
  } 

 - (void) hideKeyboard 
  {
[textfieldname1 resignFirstResponder];
    [textfieldname2 resignFirstResponder];
  }
  

Ответ №3:

Добавьте UITextFieldDelegate в свой заголовок и реализуйте этот метод делегирования:

 textFieldShouldEndEditing:
  

откажитесь от своего первого ответчика в методе.