使用多个文本字段解除第一响应者/键盘

时间:2011-07-19 03:19:31

标签: ios objective-c iphone uitextfield first-responder

经历过这样的认真...

Easy way to dismiss keyboard?

...我有多个TextFields和一些TextViews。是否有办法让所有文本字段都有批处理或组关闭第一响应者?我需要为每个领域制作方法吗?也许我忽略了那个链接中的某些东西?

也许我可以遵循这样的事情:

https://stackoverflow.com/questions/3282837/problem-with-multiple-textfields-to-make-the-keyboard-dissapear

后者会有意义吗?提前谢谢。

= - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = -

我想通了......

Controller.h

@interface Controller : UIViewController <UITextFieldDelegate> {
    IBOutlet UITextField *clickedDone;
}
@property (nonatomic, retain) IBOutlet UITextField *clickedDone;

Controller.m

#import "Controller.h"
@implementation Controller
@synthesize clickedDone;

- (void)viewDidLoad
{
    [super viewDidLoad];
    [clickedDone setDelegate:self];
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return YES;    
}

4 个答案:

答案 0 :(得分:30)

视图中有一个endEditing:方法可供您使用。文档说

  

使视图(或其中一个嵌入的文本字段)重新签署第一个响应者状态。

在视图控制器中,您只需致电:

[[self view] endEditing:YES];

答案 1 :(得分:4)

clickedDone.returnKeyType = UIReturnKeyDone;  // in viewDidLoad

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{
   [textField resignFirstResponder];
   return YES;    
}

答案 2 :(得分:2)

现在非常容易。您可以根据您的使用情况采用不同的方法。在我的例子中,我在UITableViewController中有多个文本字段。我做的是这个:

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];

    [self.view endEditing:YES];
}

答案 3 :(得分:1)

最佳答案是:

  1. 在您的viewcontroller @interface中添加了UITextFieldDelegate协议 ViewController:UIViewController
  2. 在你的xib中,选择右边的Ulitlites部分中的textField “连接检查器”子部分中的XCode侧窗格, 将textField的委托链接到.xib的“文件所有者”。
  3. 在Viewcontroller实现中,包含以下内容

  4. - (BOOL)textFieldShouldReturn:(UITextField *)textField 
    {
       [textField resignFirstResponder];
       return YES;    
    }