以编程方式关闭TextField的键盘

时间:2011-10-27 06:57:07

标签: iphone objective-c keyboard textfield resignfirstresponder

我知道如何使用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];

}

3 个答案:

答案 0 :(得分:3)

你缺少的是UITextFieldDelegate,它带来了许多文本字段方法,这些方法将因不同的原因而被调用。

查看苹果文档! http://developer.apple.com/library/ios/#documentation/uikit/reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html

您应该在

中重新设置键盘
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
    [textField resignFirstResponder];
}

答案 1 :(得分:3)

在viewdidload中使用此代码

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

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

答案 2 :(得分:0)

UITextFieldDelegate添加到标头中并实现此委托方法:

textFieldShouldEndEditing:

在方法中辞退您的第一响应者。