1

UIScrollView多くのUITextFieldコントロールを持つビューがあります。いずれかのUItextFieldコントロールを入力した後、別の場所をクリックしてから別のビューに移動すると、同じビューに戻ると、UITextField.

UITextFieldビューの各コントロールにもこのコードがあります。

//self.QuestionAnswer = UITextField - This is the control with the issues.
[self.QuestionAnswer addTarget:self action:@selector(SaveQuestionAnswer:) forControlEvents:UIControlEventEditingDidEndOnExit];
[self.QuestionAnswer addTarget:self action:@selector(SaveQuestionAnswer:) forControlEvents:UIControlEventEditingDidEnd];


//sender = self.QuestionAnswer - This control is of type UITextField.
-(IBAction)SaveQuestionAnswer:(id)sender
//some code here
   [control resignFirstResponder];
//some code here
}

[control resignFirstResponder]へのフォーカスを失ったときに が実行されることも確認しましたUITextField

4

1 に答える 1

0

問題を解決しました。すべてのコントローラーは、ベース コントローラーから継承します。この基本コントローラー内には、アプリのすべてのナビゲーションを処理するメソッドがあります。

これら 2 つのメソッドを基本クラスに追加しました。基本クラスがない場合は、これをコントローラーに追加できます。これにより、ビューのすべてのコントロールが循環し、ファーストレスポンダーが解放されます。

-(void)StartReleaseAllFirstResponders
{
    for(UIView *Item in [self.view subviews]) {
        [self ReleaseAllFirstResponders:Item];
    }
}

-(void)ReleaseAllFirstResponders:(UIView*)OriginItem
{
    for(UIView *Item in [OriginItem subviews]) {
        [Item resignFirstResponder];
    }
    [OriginItem resignFirstResponder];
}

実装例です。

-(void)Navigate_Home
{
    [self StartReleaseAllFirstResponders]; //Making sure we release all first responders
    HomeController *GoToView= [self.storyboard instantiateViewControllerWithIdentifier:@"HomeController"];
    GoToView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentViewController:GoToView animated:YES completion:nil];
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}
于 2012-12-08T17:38:58.017 に答える