Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SwiftUI如何在具有手势的视图上启用按钮_Swift_Swiftui - Fatal编程技术网

SwiftUI如何在具有手势的视图上启用按钮

SwiftUI如何在具有手势的视图上启用按钮,swift,swiftui,Swift,Swiftui,我想把按钮上的看法,其中有DragGesture的ZStack。但是当我在视图上设置按钮时,它就不起作用了 结构TmpView5:视图{ @状态变量位置:CGSize=CGSize(宽:200,高:250) 动作:一些手势{ 德拉格斯特尔() .onChanged{中的值 self.position=CGSize( 宽度:value.startLocation.x +value.translation.width, 高度:value.startablocation.y +高度 ) } .onE

我想把按钮上的看法,其中有DragGesture的ZStack。但是当我在视图上设置按钮时,它就不起作用了


结构TmpView5:视图{
@状态变量位置:CGSize=CGSize(宽:200,高:250)
动作:一些手势{
德拉格斯特尔()
.onChanged{中的值
self.position=CGSize(
宽度:value.startLocation.x
+value.translation.width,
高度:value.startablocation.y
+高度
)
}
.onEnded{中的值
self.position=CGSize(
宽度:value.startLocation.x
+value.translation.width,
高度:value.startablocation.y
+高度
)
}
}
var body:一些观点{
ZStack{
矩形()
.填充(颜色.黑色)
.位置(x:位置.宽度,y:位置.高度)
.手势(拖动)
HStack{
按钮(操作:{
打印(“录制!!!”)
}){
图像(系统名称:“photo.on.rectangle”)
}.padding(.training)
按钮(操作:{
打印(“录制!!!”)
}){
图像(系统名称:“a”)
.padding(.training)
}
}
}
}
}

如果我移除手势(拖动),我可以点击按钮。是否可以在矩形上添加手势并启用按钮?

效果很好,只是按钮彼此太近,内部区域太小,因此为每个按钮添加更多内部填充,如下所示(使用Xcode 12.1/iOS 14.1测试)

HStack{
按钮(操作:{
打印(“录制!!!”)
}){

图像(systemName:“photo.on.rectangle”).padding()//谢谢!你帮了我很多忙。这很有效,但为什么我刚删除手势时效果很好?手势是否会影响按钮填充?当有两个手势时,由于按钮的可点击区域较小,无法正确解决它们之间的冲突,但当您删除一个手势时,没有其他手势和按钮工作。但是,对不起,ac事实上,我在这里贴了一个问题,如果你稍后检查,我真的很感激!
HStack {
    Button(action: {
        print("taped!!!")
    }){
        Image(systemName:"photo.on.rectangle").padding()    // << here !!
    }
    
    Button(action: {
        print("taped!!!")
    }){
        Image(systemName:"a").padding()     // << here !!
    }
}