ビュー コントローラーで、HypnosisView という名前の新しい UIView サブクラスを初期化し、ViewController のルート ビューに追加しました。そして、viewDidLoad で、次のようにビューを最初のレスポンダーになるように設定しました。
- (void)viewDidLoad
{
[super viewDidLoad];
HypnosisView *view2 = [[HypnosisView alloc] initWithFrame:[[self view] bounds]];
[self.view addSubview:view2];
BOOL success = [view2 becomeFirstResponder];
if (success) {
NSLog(@"HypnosisView became the first responder");
} else {
NSLog(@"Could not become first responder");
}
}
UIView HypnosisView.m ファイルのメソッド canBecomeFirstResponder も次のようにオーバーライドしました。
- (BOOL)canBecomeFirstResponder
{
return YES;
}
プログラムを実行すると、コンソールに「HypnosisView がファーストレスポンダーになりました」と報告されるはずですが、「ファーストレスポンダーになれませんでした」と報告されます。
しかし
デバイスを振ると、ビューはシェイク イベントに応答します。そのため、実際にはファーストレスポンダーになったように見えますが、ファーストレスポンダーにはならなかったと報告されています。このような奇妙な問題、助けてください!