TapGesture 在 Xcode 11.0 Beta 中不起作用
Posted
技术标签:
【中文标题】TapGesture 在 Xcode 11.0 Beta 中不起作用【英文标题】:TapGesture is not working in Xcode 11.0 Beta 【发布时间】:2019-06-13 16:47:27 【问题描述】:当我在 TapGesture 上查看定义时,尽管 @available(ios 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
在 MacOS 的 Cocoa 应用程序中使用 SwiftUI 和这个 TapGesture()(或任何其他手势)似乎对我不起作用。
import SwiftUI
struct CircleView : View
var body: some View
Circle()
.fill(Color.blue)
.frame(width: 400, height: 400, alignment: .center)
.gesture(
TapGesture()
.onEnded _ in
print("View tapped!")
)
#if DEBUG
struct CircleView_Previews : PreviewProvider
static var previews: some View
CircleView()
#endif
构建成功,我正在预览中查看 Circle,并且我打开了控制台,但似乎没有打印任何内容。
我做错了吗?这是 10.15 Beta 版的错误吗?除了 SwiftUI 之外,我还需要导入其他框架吗?此处是 Swift 新手。
【问题讨论】:
【参考方案1】:点击工作正常,但是当您预览应用程序时,您不会在控制台中看到您的 print
语句。实际运行应用程序,您会看到print
语句出现在您的控制台中。
或者更改您的应用以在 UI 中显示一些确认点击手势的内容,例如,Alert
:
struct CircleView : View
@State var showAlert = false
var body: some View
Circle()
.fill(Color.blue)
.tapAction
self.showAlert = true
.presentation($showAlert)
Alert(title: Text("View Tapped!"),
primaryButton: .default(Text("OK")),
secondaryButton: .cancel())
或者您可能想要为形状的颜色变化设置动画:
struct CircleView: View
@State var isBlue = true
var body: some View
Circle()
.fill(isBlue ? Color.blue : Color.red)
.tapAction
withAnimation
self.isBlue.toggle()
【讨论】:
以上是关于TapGesture 在 Xcode 11.0 Beta 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
UICollectionViewCell 上的不需要的 UIView(TapGesture 不起作用)