2

ビュー コントローラーで、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 がファーストレスポンダーになりました」と報告されるはずですが、「ファーストレスポンダーになれませんでした」と報告されます。

しかし

デバイスを振ると、ビューはシェイク イベントに応答します。そのため、実際にはファーストレスポンダーになったように見えますが、ファーストレスポンダーにはならなかったと報告されています。このような奇妙な問題、助けてください!

4

1 に答える 1