2011-12-08 9 views
5

私はUIKeyInputプロトコルを実装し、サブクラスで定義されたカスタムUIViewのとbecomeFirstResponder

- (BOOL) canBecomeFirstResponder{ 
    return YES; 
} 

を持つカスタムUIViewのを持っています。呼び出すとき:

[customView becomeFirstResponder]; 
NSLog(@"is first? %i",[customView isFirstResponder]); 

をボタンクリック時に、それはcanBecomeFirstResponderが適切に設定されているとUIKeyInputプロトコルのすべての機能が実装されていても、falseを返します。このビューが最初のレスポンダーにならないように他の何ができるのでしょうか?これは、scrollViewと別のカスタムビューの内部にあります。

アップデート:私は現在ファーストレスポンダは、と何であったかどうかチェック

UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow]; 
UIView *firstResponder = [keyWindow performSelector:@selector(firstResponder)]; 

と驚くほどfirstRespondernilました。だから何もイベントを嫌うものはない。

+0

今すぐ最初のレスポンダーをあきらめないのですか?テキストフィールドやカスタムデリゲートを持つものと同じですか? –

答えて

7

becomeFirstResponderを上書きしましたか?

サブクラスでは、このメソッドをオーバーライドして状態を更新したり、選択をハイライト表示するなどの処理を実行できます( )。

フォロー:

サブクラスは状態を更新または ような選択を強調したように、いくつかのアクションを実行するために、このメソッドをオーバーライドすることができます。現在 レスポンダが第一応答者の状態(canResignFirstResponder) を辞任することができ、新たなレスポンダがファーストレスポンダになることができるかどう

レスポンダオブジェクトは、最初の応答者となります。

ファーストレスポンダのようなレスポンダオブジェクトを作成するには、このメソッドを呼び出すことができます。ただし、 がビュー階層の一部である場合にのみ、そのビューで呼び出す必要があります。ビューのwindowプロパティに UIWindowオブジェクトが含まれている場合は、ビュー階層にインストールされています。 がnilを返すと、ビューは階層から切り離されます。

上記の条件をすべて満たしていることを確認しましたか?

+0

いいえ、それはあなたができることは素晴らしいです。 – Ralphleon

+0

私はちょうど周りに遊ぶためにそれをサブクラス化しました、そして確かにスーパーはNOを返しています:( – Ralphleon

+0

考えてみましたか? – Steve

関連する問題