添加手势后SwiftUI TextField不起作用
Posted
技术标签:
【中文标题】添加手势后SwiftUI TextField不起作用【英文标题】:SwiftUI TextField does not work after adding gesture 【发布时间】:2020-11-03 21:32:30 【问题描述】:将组合手势添加到视图后,当我点击视图内的 TextField 以更改文本时,它将不再响应。我在添加自定义组合手势后发现了这一点 - 在拖动之前我使用长按开始操作。 (注意:如果只添加了一个拖动手势,事情仍然有效。不确定这两种情况有什么特别不同。)
组合手势:
let combined = longPressGesture.simultaneously(with: dragGesture)
手势被添加到视图中:
.gesture(combined)
【问题讨论】:
【参考方案1】:我通过将 onTapGesture 添加到 TextField 来完成工作。不必在行动中投入任何东西。似乎是一种副作用,其行为可能会在未来发生变化。如果这有意义或其他处理方式,请感谢任何 cmets。
TextField(“Enter Text”, text: $myText)
.textFieldStyle(RoundedBorderTextFieldStyle())
.onTapGesture
【讨论】:
更新:我有一个水平滚动视图内的文本字段。发现我在 ScrollView 中还有其他一些东西也没有“正确”响应。而是将“空” .onTapGesture 添加到 ScrollView 内的 HStack。然后可以从 ScrollView/HStack 中的单个项目中删除它 - 并使代码更清晰。【参考方案2】:如果在拖动手势时遇到此问题,您可以设置 minimumDistance。这仍然会在文本字段上注册点击以对其进行编辑。
DragGesture(minimumDistance: 30, coordinateSpace: .global)
Adding a drag gesture in SwiftUI to a View inside a ScrollView blocks the scrolling
【讨论】:
以上是关于添加手势后SwiftUI TextField不起作用的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI - navigationBarBackButtonHidden - 向后滑动手势?
自定义 TextField 在 SwiftUI 代码中的 VStack 中不起作用
在 SwiftUI 中向 TextField/SecureField 添加图像,向占位符文本添加填充