我已将 UILongPressGestureRecognizer 连接到 View 上的 Button。我在 Interface Builder 的 Referencing Outlet Collections 中这样做了。 当按钮被按下时,一个 Action 被触发:
- (IBAction)longPressed:(UILongPressGestureRecognizer *)sender {
[self performSegueWithIdentifier:@"nextView" sender:self];
}
segue 是在 Interfacebuilder 中创建的。
下一个 ViewController 被推送(我使用 NavigationController)并正确显示。 但现在我收到此错误消息:
“嵌套的推送动画会导致导航栏损坏” “在意外状态下完成导航转换。导航栏 subview 树可能已损坏。” “对开始/结束外观转换的调用不平衡。”
当我按下后退按钮时,应用程序崩溃了。
我尝试通过简单的按钮触摸来触发 segue。它可以工作,但为什么它会与 LongPress 一起崩溃。
最佳答案
logPressed 以不同的状态被多次调用。您需要在其中添加代码以仅触发其中一种状态的事件。
然后在你想要接受的任何状态下输入类似这样的代码。
- (void)handleLongPress:(UILongPressGestureRecognizer*)sender {
if (sender.state == UIGestureRecognizerStateEnded) {
NSLog(@"UIGestureRecognizerStateEnded");
//Do Whatever You want on End of Gesture
}
else if (sender.state == UIGestureRecognizerStateBegan){
NSLog(@"UIGestureRecognizerStateBegan.");
//Do Whatever You want on Began of Gesture
}
}
我会建议这种状态:UIGestureRecognizerStateRecognized
关于ios - UILongPressGestureRecognizer 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21390543/