仅在SwiftUI中长按手势框

仅在SwiftUI中长按手势框,swift,swiftui,Swift,Swiftui,我试图复制一个长的按钮效果,就像苹果默认的那样,但是有一个定制的风格 我有一个自定义视图,在该视图中,我只需长按手势即可调用。问题是,即使我的手指仍在按,pressing变量被设置为false 我只需将手指移到“仅限视图”框外 当我将手指移到帧区域外时,我希望按下键不会将变量设置为false 我怎样才能做到这一点 这是我的密码: 。仅长按手势(最小持续时间:100000000,最大距离:100,按:{ 压入 如果!按{ 自我行动?() self.showNextScreen=true }否则{

我试图复制一个长的按钮效果,就像苹果默认的那样,但是有一个定制的风格

我有一个自定义视图,在该视图中,我只需长按手势即可调用
。问题是,即使我的手指仍在按,
pressing
变量被设置为false

我只需将手指移到“仅限视图”框外

当我将手指移到帧区域外时,我希望按下
键不会将变量设置为false

我怎样才能做到这一点

这是我的密码:


。仅长按手势(最小持续时间:100000000,最大距离:100,按:{
压入
如果!按{
自我行动?()
self.showNextScreen=true
}否则{
使用动画(.spring()){
self.showGrayBackgound=true
}
}
}) { }

使用
maximumDistance
参数设置手势应用在视图外的距离:

struct longpress视图:视图{
@状态变量isPressing=false
让动作:()->()
var body:一些观点{
矩形()
.fill(isPressing?Color.orange:.灰色)
.框架(宽度:50,高度:30)
.onLongPress手势(最小持续时间:1000000,最大距离:1000,按:{按入
self.isPressing=按下
如果!按{self.action()}
},执行:{})
}
}
足够大的
最大距离将位于屏幕边界之外,长按将保持激活状态,直到释放为止。但是,使用
长按手势
不可能出现macOS行为,即在帧外来回拖动时单击并按住按钮,以使按钮的状态处于关闭和打开状态。一旦超出
最大距离
,手势即完成