私はかなり基本的なものが欠けていると思いますが、ボタンを押しても適切に上書きすることはできません。tvos PressBeganをオーバーライドします
メニューボタンの押下を検出しようとしていますので、pressesBegan:
を上書きし、UIPressTypeMenu
をテストします。このメソッドは、メニューボタンの押下をキャッチして自分のコードを実行しますが、その後はすぐにアプリケーションの終了とともに実行されます。
これは私のオーバーライドされたメソッドです。誰かが私が間違っていることを知っていますか?自動メニュー終了を無効にする必要があるのですか? 2人のレスポンダーがいるのとほとんど同じです。左タップと右タップについても同じことが言えます。彼らは認識され、コードは起動しますが、イベントを完全には処理していないため、フォーカスが変更されます。
私は、アプリケーションの最初のビューコントローラでコードを試して、メニューが適切にオーバーライドされています。次に、空のビューを設定し、そのビューをビュー番号2として表示して、オーバーライドするメソッドを取得できません。あなたはpressesEnded:withEvent:
メッセージはレスポンダチェーンのトップにバックアップを取得することができているので
- (void)pressesBegan:(NSSet<UIPress *> *)presses withEvent:(UIPressesEvent *)event {
for(UIPress *press in presses) {
if(press.type == UIPressTypeMenu) {
[(UIImageView *) [self.view viewWithTag:100] setUserInteractionEnabled:NO];
}
if(press.type == UIPressTypePlayPause) {
// play and pause code
}
}
}
-(void) pressesEnded:(NSSet<UIPress *> *)presses withEvent:(UIPressesEvent *)event {
//
for(UIPress *press in presses) {
if(press.type == UIPressTypeMenu) {
// do ButtonA job
NSLog(@"test");
}
if(press.type == UIPressTypePlayPause) {
// do ButtonX job
} else {
}
}
}
-(void) pressesChanged:(NSSet<UIPress *> *)presses withEvent:(UIPressesEvent *)event {
// Works fine!
for(UIPress *press in presses) {
if(press.type == UIPressTypeMenu) {
// do ButtonA job
}
if(press.type == UIPressTypePlayPause) {
// do ButtonX job
}
}
}
-(void) pressesCancelled:(NSSet<UIPress *> *)presses withEvent:(UIPressesEvent *)event {
// Works fine!
for(UIPress *press in presses) {
if(press.type == UIPressTypeMenu) {
// do ButtonA job
NSLog(@"cancelled");
}
if(press.type == UIPressTypePlayPause) {
// do ButtonX job
}
}
}
あなたはこれを解決しましたか?私はまた、メニューボタンをキャプチャしようとしています。 –