iOS 7如何获取当前所选的UITextField id

时间:2013-11-15 02:10:00

标签: ios iphone

在调用dismissKeyboard时,我将每个UITextField添加到resignFirstResponder。

有没有办法可以获取当前所选UITextField的ID并使其成为resignFirstResponder?

#import "NewBabyViewController.h"

@interface NewBabyViewController ()
@property (weak, nonatomic) IBOutlet UITextField *BabyName;
@property (weak, nonatomic) IBOutlet UITextField *BabyNickname;    
@end

@implementation NewBabyViewController

- (void)viewDidLoad
{
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
                                   initWithTarget:self
                                   action:@selector(dismissKeyboard)
                                   ];
    [self.view addGestureRecognizer:tap];
}

-(void)dismissKeyboard{

    [self.view endEditing:YES];
    //[self.BabyName resignFirstResponder];
    //[self.BabyNickname resignFirstResponder];
}

-(IBAction)textFieldDone:(id)sender
{
    [sender resignFirstResponder];
}

@end

2 个答案:

答案 0 :(得分:6)

这个问题的解决方案并不是很明显,但它实际上非常容易解决。只需使用以下内容:

-(void)dismissKeyboard {
    [self.view endEditing:YES];
}

答案 1 :(得分:2)

您应该自己跟踪第一个响应者。有多种方法可以做到这一点,但最简单的方法是更新textFieldDidBeginEditing:

如果您希望进入灰色区域,UIApplicationUIWindow- (id)firstResponder上都会有一个私有API方法,它会为您提供当前的第一响应者。我和他们有很好的记录。我更喜欢UIWindow方法,当涉及多个窗口时更安全。

另一种方式:

[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];