gpt4 book ai didi

button - tvos 压倒性压力机开始

转载 作者:行者123 更新时间:2023-12-02 05:58:53 26 4
gpt4 key购买 nike

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

我正在尝试检测菜单按钮按下情况,因此我重写 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com