0

私は、resignFirstResponder が機能していないように見える iPad アプリケーションを持っています。私は多くの解決策を試しました。firstResponder オブジェクトのインスタンスからファーストレスポンダーの辞任を呼び出しているだけですが、キーボードは画面上に残っています。次に、すべてのウィンドウを反復して最初のレスポンダーのインスタンスを取得しようとしましたが、そのインスタンスから rejectFirstResponder を呼び出しています。

UIViewControllerまた、次のメソッドのカテゴリを作成してみます。

  - (BOOL)disablesAutomaticKeyboardDismissal
    {
         return NO;
    }

しかし、この解決策も私にとってはうまくいきません。そして、このキーボードの問題は、特定のテキストフィールドだけでなく、アプリケーションのすべてのテキストフィールドにあります。

更新: アプリの別の部分で、この目的のために別のコードを使用しています。ここにコードがあります

- (void)textFieldDidEndEditing:(UITextField *)mtextField
 {
 [mtextField resignFirstResponder]; this one is not required but I have just write   it here.
 }

- (BOOL)textField:(UITextField *)theTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if([string hasSuffix:@"\n"])
{
    [theTextField resignFirstResponder];
    return NO;
}
return YES;
}

更新: シミュレーターでアプリケーションを実行しようとすると、動作することがありますが、シミュレーターでもresignFirstResponder起動するたびに動作するわけではありません。

4

4 に答える 4

5

キーボードを非表示にする最も簡単で最良の方法は、使用することです

[self.view endEditing:YES];

テキストフィールドの適切なデリゲートを設定していることを確認してください

于 2012-08-01T11:52:47.210 に答える
1

リターン キーを押したときにキーボードを無効にする場合は、次を使用する必要があります。

- (BOOL)textFieldShouldReturn:(UITextField *)textField

{
[textField resignFirstResponder];  
return YES;
}

次に、textFieldDidEndEditing が呼び出されます。

于 2012-08-01T13:21:00.263 に答える
0

まず、Objective-Cでメソッドを呼び出すのではなく、オブジェクトにメッセージを送信します。

UIViewメッセージを送信する必要があるのはではありませんresignFirstResponder。あなたUITextFieldをプロパティとして持ってください-それをmyTextFieldと呼びましょう。これを使用する必要があります:

[self.myTextField resignFirstResponder];
于 2012-08-01T11:32:40.457 に答える
0

この問題の解決策を得ました。実際には、apple cocoa API にいくつかの変更があるようです。私のアプリには、UIAlertViewいくつかの操作が進行中であり、ユーザーがそれを完了するまで待つ必要があることを示すために表示していた があります。その目的のために、アプリで使用するコードは

- (void)displayAlertView
   {
     UIAlertView *alertView = creating the object;
     UIActivityIndicatorView *activityIndicator= creating the object;
     [alertView addSubview:activityIndicator];
     [activityIndicator startAnimating];
     [alertView show];
     [alertView release];
    }

-(void)didPresentAlertView:(UIAlertView *)alertView
 {
      [alertView dismissWithClickedButtonIndex:0 animated:NO];
 }

アプリケーションで以下のコードを使用すると、問題が解決します

  -(void)didPresentAlertView:(UIAlertView *)alertView
 {
      [self performSelector:@selector(dismissView:) withObject:alertView afterDelay:0.0];

 }

  -(void)dismissView:(UIAlertView*)alertView
 {
      [alertView dismissWithClickedButtonIndex:0 animated:NO];
 }

ここで、 で何か問題が発生していると思いますUIAlertView。そのため、ファーストレスポンダーとして辞任するときにキーボードが隠れません。

于 2012-08-06T04:22:46.883 に答える