2012-08-11 7 views
11

UITextFieldがキーボードのアニメーションなしでファーストレスポンダになる方法はありますか?つまり、キーボードがちょうど現れるようにしますか?アニメーションなしの最初のレスポンダーになる

基本的に、私はUITextFieldがありUIViewController上に第2 UIViewControllerを押していて、その第2のビューコントローラは、スタックからポップ取得したときに、私はそうときに、第2のビューコントローラUITextFieldはすぐにファーストレスポンダステータスを持つようにしたいですポップされると、ユーザはテキストフィールドが最初のレスポンダではないことに気付かない。

現時点では、ポップアップしたときにキーボードが画面をアニメーション表示するようになっていますが、私はそれを見たくはありません。

アイデア?

答えて

14

あなたはそう

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:0.0]; 
[UIView setAnimationDelay:0.0]; 
[UIView setAnimationCurve:UIViewAnimationCurveLinear]; 

[textField becomeFirstResponder]; // <---- Only edit this line 

[UIView commitAnimations]; 

これは、キーボードが突然表示される場合がありますようにUIViewのアニメーションを使用することができます。

あなたは同じですが、-resignFirstResponder

スウィフトとを行うことができます。..

UIView.beginAnimations(nil, context: nil) 
    UIView.setAnimationDuration(0.0) 
    UIView.setAnimationDelay(0.0) 
    someTextView.resignFirstResponder() 
    UIView.commitAnimations() 
+0

UIViewは何ですか? 'self.view'のようなものか、それとも' UITextField'ですか?また、私は 'viewWillAppear'にこれを入れますか? –

+0

UIViewはクラスを参照します。変更する必要があるのは 'textField'だけです。これはfirstResponderを作成したいUITextFieldの名前でなければなりません –

+0

私はそれを行いましたが、何も変わっていません...私は、テキストフィールドを持つView Controllerが既にロードされていると思います。ビューが作成されるとすぐに表示されるように見えますが、スタック上の別のコントローラーからこのビューコントローラーにポップバックすると、既にロードされているので、これは起こりません。私はこのコードを 'viewWillAppear'に入れました。私は何をすべきか? –

1

だけでユーザーを作成する-viewDidAppearにおけるファーストレスポンダとして設定し、その地位を失ったフィールドに気づくことはありません。あなたがそれをたい場合

-(void)viewWillAppear:(BOOL)animated { 
    if ([self isViewLoaded] && self.textField) 
     [self.textField becomeFirstResponder]; 
     [super viewWillAppear:animated]; 
} 

私は、このコードを使用してdropboxに短いサンプルプロジェクトを設置しました。

+0

あなたは '[super viewWillAppear:animated]'と呼ぶのを忘れました。また 'self 'を呼び出します。View Controller上に存在するかどうかをチェックする '' view''がビューの作成をトリガーしますので、 '[self isViewLoaded]'を使う方が良いでしょう。最後に、この特定のケースでは、あなたが 'viewWillAppear'メソッド内にいるという事実は、ビューがすでに作成されていることを伝えます。 –

+0

私の基本的なIOSを忘れていません。また、View Controllerのビューがnilであるときに-loadViewが呼び出されるため、self.viewチェックはビューの作成を強制しません(現在はテスト済みです)。これは最初にチェックしています。 – CodaFi

0

私は、あなたがどのようなiOSのバージョンを使用するか、またはどの時点であなたはiOS5を/ iOS6のためviewWillAppear:[textFieldReference becomeFirstResponder]を呼び出すbecomeFirstResponder を呼び出すようにしてくださいMOTは、あなたがそれを望んでいただけのように動作するようです:

それがされていますビューコントローラが表示される直前に呼び出されます(ビューコントローラの階層を手動で処理しない場合)、ナビゲーションコントローラに表示されるとすぐにキーボードが表示され、テキストフィールドにフォーカスがあります。

しかし、キーボードの外観スタイルを指定することができると聞いた公開方法はありません。

+0

パブリックな方法は@ NSArrayの答えのようなUIViewのCore Animationラッパーです。 – CodaFi

+0

私はiOS 5.0を使用していますが、私はこれを試しても何も変わっていません... –

関連する問題