tvos Overriding pressBegan

jps*_*are 5 menu button tvos

我想我错过了一些非常基本的东西,但我无法按下按钮来正确覆盖.

我试图检测菜单按钮按下,所以我覆盖pressesBegan:并测试UIPressTypeMenu.该方法捕获菜单按钮,并执行我的代码,但随后立即跟随应用程序退出.

这是我重写的方法.有谁知道我做错了什么?还有什么我需要覆盖自动菜单退出吗?这几乎就像有两个响应者.同样处理左侧点击和右侧点击.它们被识别,我的代码会被激活,但无论如何焦点都会改变,因为我还没有完全处理这个事件.

我在应用程序的第一个视图控制器中尝试了代码,并且菜单被正确覆盖.然后,我设置一个空白视图并将该视图显示为视图编号2,我无法获取要覆盖的方法.

- (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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Jus*_*oss 2

该应用程序正在退出,因为您允许pressesEnded:withEvent:消息返回到响应者链的顶部。您还应该重写该方法,然后执行调用super但请注意:如果用户无法使用菜单退出,他们会对您感到非常沮丧)

左箭头和右箭头正在触发焦点变化,因为这些箭头是通过手势识别器处理的,而不是通过pressesBegan/pressesEnded方法,因此您的视图是否覆盖这些箭头并不重要。

iOS 事件处理指南提供了有关手势识别器和UIResponder方法如何相互作用的更多详细信息。