如果现有的屏幕交互经过并在 UIView 上停止,则运行操作
Posted
技术标签:
【中文标题】如果现有的屏幕交互经过并在 UIView 上停止,则运行操作【英文标题】:Run action if a existing screen interaction passes over and stops on a UIView 【发布时间】:2016-11-01 08:07:54 【问题描述】:如何向 uiview 添加一个动作,如果屏幕交互(长按)移动到 uiview 并在那里停留一段选定的时间,该动作将运行。
编辑:我有一个下拉菜单系统,长按按钮会显示菜单。然后用户将向下滑动到一个选项上,然后释放水龙头。我想知道发生在哪个菜单项上并采取相应措施。
【问题讨论】:
【参考方案1】:将以下手势添加到您的 UIView 以实现长按功能。
var longTap = UILongPressGestureRecognizer(target: self, action: #selector(self.longTouch))
longTap.numberOfTapsRequired = 0 // Set your own number here
longTap.minimumPressDuration = 1.0 //Set your duration here
longTap.delegate = self// Add the <UIGestureRecognizerDelegate> protocol
self.view.addGestureRecognizer(longTap)
添加代理
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool
return true
下面是选择器将被调用
func longTouch(_ recognizer: UILongPressGestureRecognizer)
if recognizer.state == .began
print("longTouch UIGestureRecognizerStateBegan")
if recognizer.state == .ended
print("longTouch UIGestureRecognizerStateEnded")
Objective C 版本
UILongPressGestureRecognizer *longTap = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longTouch:)];
[longTap setNumberOfTapsRequired:0]; // Set your own number here
[longTap setMinimumPressDuration:1.0]; // Set your duration here
[longTap setDelegate:self]; // Add the <UIGestureRecognizerDelegate> protocol
[self.view addGestureRecognizer:longTap];
德尔盖特:-
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
return YES;
选择器:-
- (void) longTouch: (UILongPressGestureRecognizer *)recognizer
if (recognizer.state == UIGestureRecognizerStateBegan)
NSLog(@"longTouch UIGestureRecognizerStateBegan");
if (recognizer.state == UIGestureRecognizerStateEnded)
NSLog(@"longTouch UIGestureRecognizerStateEnded");
【讨论】:
可以在 obj c 中得到这个。我真的不知道 swift。 谢谢,我会试试这个。 我不认为这是我所追求的。我希望能够分辨出长按结束于哪个 UIView。我有一个下拉菜单系统,长按按钮会显示菜单。然后用户将向下滑动到一个选项上,然后释放水龙头。我想知道发生在哪个菜单项上并采取相应的行动。 Menu 是你的 UIButton 而 menuItems 是 UIButton 还是 UIView? UIViews。我可以添加 UIButton,但似乎我必须点击它们才能激活它。以上是关于如果现有的屏幕交互经过并在 UIView 上停止,则运行操作的主要内容,如果未能解决你的问题,请参考以下文章
我可以立即停止第一个 UIView 动画并在同一视图上启动第二个动画吗?
AnimateWithDuration 禁用 UIView 上的 userInteraction