gpt4 book ai didi

ios - 关于 UIGestureRecognizer

转载 作者:行者123 更新时间:2023-11-29 13:02:42 25 4
gpt4 key购买 nike

我正在学习 iOS 开发并且正在查看 UIGestureRecognizer 的。

我有一个观点。当您点击该 View 时,我想显示一个 UIPopoverController 并且我还希望它像 UIButton 一样工作,因为当您按下它时它会“突出显示”。

我想这样做的方法是使用 2 个 UIGestureRecognizer - 一个 UITapGestureRecognizer 和一个 UILongPressGestureRecognizer

我遇到的问题是 highlight 方法被立即调用(这是我想要的),但如果我将手指移动得足够远,UITapGestureRecognizer 就会被取消。那时,我想调用另一种方法 (unhighlight) 来恢复 UIView 的初始背景颜色,但我不知道该怎么做。

我对此很陌生,所以这个问题可能很基础,我感谢任何人能给我的帮助。

UIViewController 中:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(togglePopover)];

[self.view addGestureRecognizer:tap];

UILongPressGestureRecognizer *press = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(highlight)];
press.minimumPressDuration = 0.f; //highlight immediately
press.delegate = self; //set the delegate to self
[self.view addGestureRecognizer:highlight];


//the delegate part of the UIViewController
- (BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldRecognizeSimultaneouslyWithOtherGestureRecognizer:(UIGestureRecognizer*)otherGestureRecognizer {
return YES; //allows allow simultaneous recognition of gestures on this view
}

最佳答案

UITapGestureRecognizer 具有给定的行为,您刚刚在具体案例中对此进行了描述。

您所追求的可以通过像 UIPanGestureRecognizer 这样的连续手势识别器来完成。

具体来说,连续的手势识别器操作方法将根据手势识别器经过的状态接收一系列调用。

其中一个状态是 UIGestureRecognizerStateCancelled,因此您可以管理它来检测手势何时被取消,就像您的情况一样,并通过移除突出显示来相应地采取行动。另一方面,当您的操作在 UIGestureRecognizerStateBegan 状态下被调用时,您会突出显示该按钮。

你的操作方法应该是这样的:

- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer {

if (recognizer.state == UIGestureRecognizerStateBegan) {

...
} else if (recognizer.state == UIGestureRecognizerStateCancelled) {

...
}
}

另一种方法是创建您自己的手势识别器子类,您可以在其中处理 touchesBegan:/touchesMoved:/touchesEnded: 方法以满足您的需要。

如果你看一下UIGestureRecognizer reference你会发现很多信息。

关于ios - 关于 UIGestureRecognizer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19410461/

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