2011-07-06 6 views
5

私のアプリにはナビゲーションコントローラがあります。私のすべてのコントローラがポップアップしてプッシュします。 1つのコントローラには12のテキストフィールドがあります。 2つのテキストフィールドは他のコントローラを呼び出します。これはUIDatePickerであり、この2つのフィールドで現在の日付を設定する委譲メソッドを使用します。iOSのキーボードを隠すことができません

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

[self.remedyName becomeFirstResponder]; 
[self.remedyName resignFirstResponder]; 
[self.doseName resignFirstResponder]; 
[self.count resignFirstResponder]; 
[self.dateFrom resignFirstResponder]; 
[self.dateTill resignFirstResponder]; 
[self.doseAmount resignFirstResponder]; 

[self.view endEditing:NO]; 
[self.view resignFirstResponder]; 
    DatePickerViewController *dateView = [[DatePickerViewController alloc] initWithNibNameAndKey:@"DatePickerViewController" bundle:[NSBundle mainBundle] key:@"from"]; 
dateView.delegate = self; 
[self.navigationController pushViewController:dateView animated:YES]; 
[dateView release]; 

問題は、私はこれらの二つのフィールドを編集するために開始し、キーボードがアクティブであるとき、私たちはキーボードでDatePickerのコントローラに移動し、それが私の日付ピッカーを隠しています。私はこの問題が解決できることを知っていますが、私はどのように分かりません。私を助けてください。

答えて

0

それはトラブルを引き起こして、この行のようになります。

[self.remedyName becomeFirstResponder]; 

そうでない場合は、すべてのビューがファーストレスポンダを辞任したことを確認するために、このような何かを行うことができます。

- (void)resignFirstResponderForSubviewsOfView:(UIView *)aView { 

    for (UIView *subview in [aView subviews]) { 

     if ([subview isKindOfClass:[UITextField class]] || [subview isKindOfClass:[UITextView class]]) 
      [(id)subview resignFirstResponder]; 

     [self resignFirstResponderForSubviewsOfView:subview]; 
    } 
} 

次に、このようにそれを呼び出しますビューコントローラから:

[self resignFirstResponderForSubviewsOfView:[self view]]; 
+0

おかげでそれについての詳細を読むことができ、誤ってまたは呼び出す何かのリスクを減らすか、

[self.remedyName becomeFirstResponder]; 

のようにオンにします。私はあなたのコードをチェックしますが、キーボードは消えません。私はすべてを試して、多くの話題を見ますが、それは助けになりません。 – Oleg

13

これは、各ビューが最初のレスポンダを辞任するように要求します。このよう

[self.view endEditing:YES]; 

ファーストレスポンダを辞任する他のすべての呼び出しは冗長であるファーストレスポンダを辞任する各ビューを尋ねます。これらは除去されなければならないとあなたがお返事のためApple Docs

+0

ありがとうが、私もそれを行う。 – Oleg

+0

引数 'YES'は、ビューが最初のレスポンダを辞任するためのものです。あなたは 'いいえ 'を使用したので、ビューには手放す準備ができていない可能性があります。 –

+0

私は自分のself.viewの上にuiscrollviewも持っています。それが助けば。 – Oleg

関連する問題