Ios 快捷界面处理按钮/视图,带ONTAPPORATE和ONLONGPRESSORATE,带释放动作
我有一个同时具有ONTAPSERTIVE和ONLONGPRESSERTIVE的视图。问题是,我的onLongPressPicture的实现阻止了对onTapPicture的调用 这里有一些代码Ios 快捷界面处理按钮/视图,带ONTAPPORATE和ONLONGPRESSORATE,带释放动作,ios,button,swiftui,gesture,Ios,Button,Swiftui,Gesture,我有一个同时具有ONTAPSERTIVE和ONLONGPRESSERTIVE的视图。问题是,我的onLongPressPicture的实现阻止了对onTapPicture的调用 这里有一些代码 View() .onTapGesture { action_1 } .onLongPressGesture(minimumDuration: 0.5, maximumDistance: 10, pressing: {
View()
.onTapGesture {
action_1
}
.onLongPressGesture(minimumDuration: 0.5, maximumDistance: 10, pressing: {
pressing in
self.isPressing = pressing
if (pressing) {action_2}
if !pressing {action_3}
}, perform: {})
.onLongPress手势中的pressing参数检测用户是否正在按view/按钮,并且无论最短持续时间是多少,都将始终执行.onLongPress手势。Edit
Snapchat快门,您可以点击它来拍照,按住按钮开始录制视频,然后松开按钮停止录制视频。这就是为什么需要执行三个操作
这很棘手。以下是我所做的:
ontap手势
,用于点击手势长按手势
,延时0.5秒。0.5秒结束后(.oned
),开始录制DragGesture
,用于观察手指何时离开屏幕。发生这种情况时,请停止录制旧答案:按
参数不用于执行操作2
之类的操作。可以,但它更常用于更改@状态
,例如,按下时以绿色突出显示视图。您可以在中找到更多信息
相反,您可能希望在执行
闭包中调用您的操作(action_2
/print(“long”)
)
struct ContentView: View {
var body: some View {
Text("Hi")
.font(.title)
.onTapGesture {
print("tap")
}
.onLongPressGesture(minimumDuration: 0.5, maximumDistance: 10) {
print("long")
}
}
}
结果:
唯一的问题是,我希望在启动长点击时执行一个操作,然后在释放长点击时启动另一个操作,这个答案不适用于该用例。@BestFromAbove获得了它。如果找到解决方案,将编辑我的答案。帮助您理解的一个示例是Snapchat快门,您可以点击快门拍照,按住按钮开始录制视频,然后松开按钮停止录制视频。这就是为什么需要执行三个操作的原因。@BestFrom请参见我的editGreat变通方法!这将是官方的答案,直到有一个更正式的方式来处理这些事件!我感谢你在这方面的帮助。
struct ContentView: View {
var body: some View {
Text("Hi")
.font(.title)
.onTapGesture {
print("tap")
}
.onLongPressGesture(minimumDuration: 0.5, maximumDistance: 10) {
print("long")
}
}
}