增加 TextField 的可点击区域

Posted

技术标签:

【中文标题】增加 TextField 的可点击区域【英文标题】:Increase tappable area of TextField 【发布时间】:2021-03-15 10:49:03 【问题描述】:

我目前有以下代码,表示带有背景和图标的 TextField。

struct TextFieldAreaView: View 
    
    @State var query = ""
    
    var body: some View 
        
        HStack 
            
            Image(systemName: "magnifyingglass")
                .padding(.leading, 10)
            
            TextField("Placeholder", text: $query)
                .padding(5)
        
        .background(Color.black.opacity(0.3))
        .cornerRadius(10)
        .padding()
        
    

当然,因为背景实际上是 HStack,而图标是 TextField 框架区域之外的图像,所以当用户点击其中任何一个时,键盘都不会出现。

为了让键盘显示,您必须精确地点击 TextField。这当然不是很直观。

有没有什么办法可以在点击图标或背景 HStack 时显示键盘?

【问题讨论】:

您可以尝试此处提供的解决方案之一:link @federicoramos77 不使用第三方包就没有办法吗? 【参考方案1】:

您可以尝试删除填充或提供负数,例如:

 .padding(.trailing, -100)

这样做会增加可点击区域。因为默认情况下,当您使用 padding() 时,它会在顶部、按钮、左侧和右侧的所有 4 个方向上缩小您的文本字段。

这是我项目中的一个例子:

  HStack
        Image(systemName: taskViewModel.task.completed ? "checkmark.circle.fill" : "circle")
            .resizable()
            .frame(width: 20, height:20)
            .onTapGesture 
                self.taskViewModel.task.completed.toggle()
            
        TextField("Enter the task title", text: $taskViewModel.task.title, onCommit: 
            self.onCommit(self.taskViewModel.task)
            
                
        )
        .padding()
        .padding(.trailing, -100)

【讨论】:

不幸的是,这似乎不起作用。它还会移动文本和占位符的位置。

以上是关于增加 TextField 的可点击区域的主要内容,如果未能解决你的问题,请参考以下文章

如何增加 <a> 标签按钮的可点击区域?

SwiftUI 中图像按钮的可点击区域

scss 增加给定元素的可定位区域而不影响布局。需要垂直增加;水平是可选的。

图片的可点击区域

Swiftui 有没有办法改变按钮的可点击区域

如何使按钮的可点击区域成为按钮框架