作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我认为我错过了一些非常基本的东西,但我无法按下按钮来正确覆盖。
我正在尝试检测菜单按钮按下情况,因此我重写 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/
我是一名优秀的程序员,十分优秀!