gpt4 book ai didi

ios - 增加View的点击目标而不改变位置

转载 作者:行者123 更新时间:2023-11-29 05:09:36 25 4
gpt4 key购买 nike

我有这个小家伙:

VStack(alignment: .leading, spacing: 4) {
Text("Name")
.font(.subheadline).bold()
TextField("Name", text: self.$name)
}

他看起来像这样: enter image description here

现在我想增加点击目标,以便您可以点击 VStack 中的任意位置来调出 TextField 的键盘。有什么好的方法可以做到这一点?

我考虑将 onTapGesture 添加到 VStack,但似乎无法触发成为 TextFields 的第一响应者,因此似乎我需要增加 TextField 框架以获得更大的点击目标。也许将它放在 ZStack 中,而不是上面填充,但复杂的是,当标题高度动态时,我如何确保它在视觉上堆叠在标题下方?也许可以使用 contentShape 以某种方式向其添加填充?

最佳答案

您可以创建 UITextField 的子类并重写 point(inside:with:) 方法:

open override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
let bounds = self.bounds
let extended = bounds.insetBy(dx: -10, dy: -10)
let inside = extended.contains(point)
return inside
}

并在 SwiftUI 中使用 UITextField 的自定义子类。如果触摸位于其中一个 subview (具有扩展触摸字段),则可能必须创建 VStack 子类以允许在 VStack 之外进行触摸。

关于ios - 增加View的点击目标而不改变位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59807167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com