#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:
откажитесь от своего первого ответчика в методе.