button - tvos 压倒性压力机开始

标签 button menu tvos

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

我正在尝试检测菜单按钮按下情况,因此我重写 pressesBegan: 并测试 UIPressTypeMenu。该方法捕获菜单按钮按下,并执行我的代码,但随后立即退出应用程序。

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

我在应用程序的第一个 View Controller 中尝试了代码,菜单被正确覆盖。然后,我设置了一个空白 View 并将该 View 呈现为 View 号 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
        }
    }
}

最佳答案

应用程序正在退出,因为您允许 pressesEnded:withEvent: 消息返回到响应程序链的顶部。您还应该重写该方法,并且如果您不希望应用程序退出,则不要调用super(不过,这里要小心:如果用户无法使用退出菜单,他们会对你感到非常沮丧)

左右箭头会触发焦点更改,因为这些更改是通过手势识别器处理的,而不是通过 pressesBegan/pressesEnded 方法处理的,因此无论您的 View 是否覆盖那些。

Event Handling Guide for iOS有关手势识别器和 UIResponder 方法如何相互交互的更多详细信息。

关于button - tvos 压倒性压力机开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33058896/

相关文章:

flutter - 如何将 SVG 图标放入 flutter ?

CSS响应式菜单显示,然后隐藏,为什么

swift - swift 中 tvOS 的 Toast 功能

c++ - WM_GETTEXT 按钮操作

javascript - 使用 Javascript 的响应式菜单,问题

tvos - 如何让 tvOS 知道不启动屏幕保护程序

ios - Apple 应用内购买和收据刷新

javascript - 使用 javascript/jquery 重新启动问答游戏

java - 在 if 语句中注册按钮单击

c# - C# .NET 中的表单