gpt4 book ai didi

ios - 检测 LongPressGesture 已在另一个 View Controller 中结束

转载 作者:行者123 更新时间:2023-11-29 10:35:59 29 4
gpt4 key购买 nike

我有一个 LongPressGesture 识别器,当检测到长按时它会显示一个新的序列:

if (gestureRecognizer.state == UIGestureRecognizerStateBegan) {

[self performSegueWithIdentifier:@"showImage" sender:self];
}

问题是我希望新的“segue”能够检测到手势已经结束并恢复到之前的 View Controller :

if (gestureRecognizer.state == UIGestureRecognizerStateEnded) {

[self presentViewController:friendViewController animated:YES completion:Nil];
}

我试图在新的 segue 中设置一个新的手势识别器,但除非用户结束前一个手势,否则它不会被检测到。

最佳答案

您正在(或试图)错误地做几件事。当您切换到新 Controller 时,长按识别器的状态将变为“失败”,因此您无能为力。无法将手势识别器添加到新 Controller 的 View 中以接受您之前的触摸作为其触摸的开始,因此这是行不通的。另外,如果你想回到你以前的 Controller ,你不应该使用 presentViewController,它只会创建一个新的 friendViewController 实例;它不会回到原来的状态。

我认为您需要实现目标的方法不是呈现一个新 Controller ,而是在带有手势识别器的 View 之上添加一个新 View 。在下面的示例中,我只是为了演示目的创建了一个简单的 View ,但如果您需要更复杂的东西,您可以在 xib 中创建一个。

-(IBAction)handleLongPress:(UILongPressGestureRecognizer *)sender {

if (sender.state == UIGestureRecognizerStateBegan) {
UIView *newView = [[UIView alloc] initWithFrame:self.view.bounds];
newView.backgroundColor = [UIColor redColor];
newView.tag = 10;
[self.view addSubview:newView];
}

if (sender.state == UIGestureRecognizerStateEnded) {
[[self.view viewWithTag:10] removeFromSuperview];
}
}

关于ios - 检测 LongPressGesture 已在另一个 View Controller 中结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27049189/

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