2

DismissKeyboard を呼び出すときに、すべての UITextField を rejectFirstResponder に追加しました。

現在選択されている 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
4

2 に答える 2

6

この問題の解決策は明確ではありませんが、実際には非常に簡単に解決できます。以下を使用するだけです。

-(void)dismissKeyboard {
    [self.view endEditing:YES];
}
于 2013-11-15T02:19:34.957 に答える
2

最初の応答者を自分で追跡する必要があります。それには複数の方法がありますが、最も簡単な方法は で更新することtextFieldDidBeginEditing:です。

灰色の領域にスレッド化する場合は、 と の両方にプライベート API メソッドがありUIApplicationUIWindow現在- (id)firstResponderのファーストレスポンダが得られます。私は彼らと良い記録を持っています。UIWindow複数のウィンドウが関係している場合は、より安全な方法をお勧めします。

別の方法:

[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];
于 2013-11-15T02:19:50.923 に答える