gpt4 book ai didi

ios - Swift 以编程方式启动 UILongPressGesture

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

我想在用户触摸按钮时以编程方式启动 UILongPressGesture。这是几年前在 How can I send a UILongPressGesture programmatically? 上提出的问题。但我想知道是否有更干净或更现代的解决方案。

我现有的 UILongPressGestureRecognizer 代码(将实际的用户交互映射到功能)的工作原理如下:

view.addGestureRecognizer(UILongPressGestureRecognizer(target: self, action: #selector(longPress)))

其中 longPress 定义为:

@objc func longPress(sender: UILongPressGestureRecognizer) {
switch sender.state {
case .began:
// Display a 'hover' animation for a specific UIView
....
case .changed:
// Move existing hover animation
...
default:
// Complete the hover animation
...
}
}

所需功能

我使用长按来为用户选择的任何 UIView 显示“悬停”效果。我还想提供一个按钮来自动启动长按(绕过 longPress 其中 sender.state == .began)。我预计的解决方案是以编程方式创建 .began 长按,创建一个用户可以在屏幕上拖动的手势对象(甚至可能将 UILongPressGestureRecognizer 转换为 UIPanGestureRecognizer 如果可能的话),然后使用新手势继续悬停动画逻辑。

最佳答案

我找到了一个更简洁的解决方案来解决当前的问题 - 用包含自己的 UILongPressGestureRecognizerUIView 替换所需的按钮。我将此手势的 minimumPressDuration 设置为 0,因此它的行为与按钮的 touchDown 事件等效。这个新手势使用与原始问题相同的 longPress 函数,不需要任何额外的代码来触发。

关于ios - Swift 以编程方式启动 UILongPressGesture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55860124/

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