SwiftUI TextField输入框之添加收起键盘按钮、清除按钮

在使用TextField输入框时,输入的内容需要全部清除时,肯定希望有一键清除功能 (clearButton),这个功能在TextField暂时没有可直接设置的API,同时在键盘类型设置为数字键盘等类型时,右下角没有return键可供收起键盘,这时在键盘上自定义收起键盘的按钮就非常必要,本文将介绍这两种实用技巧。

TextField 清除按钮

可以通过设置 UITextField 中的 clearButtonMode 来实现效果,具体可以看文末的详细代码和注释。

TextField 添加收起键盘按钮

可以绑定 FocusState 属性,配合添加键盘 toolbar 菜单工具按钮实现,具体可以看文末的详细代码和注释。

详细代码

import SwiftUI

struct TextView: View {


    @State private var numbers: String = ""
    @FocusState private var focusedField: Bool
    
    var body: some View {
        Form {
            TextField(text: $numbers, prompt: Text("数量")) {
                
            }
            .textFieldStyle(.roundedBorder)
            .speechAdjustedPitch(0.5)
            .keyboardType(.decimalPad)
            // 绑定 focusedField
            .focused($focusedField, equals: true)
            // 键盘添加toolbar
            .toolbar {
                ToolbarItem(placement: .keyboard, content: {
                    Spacer()
                })
                ToolbarItem(placement: .keyboard) {
                    Button {
                        self.focusedField = false
                    } label: {
                        Image(systemName: "keyboard.chevron.compact.down")
                    }
                }
            }
            .padding(.vertical)
            .onAppear {
                // 通过设置 UITextField 中的 clearButtonMode 来实现效果
                // .whileEditing  编辑时出现清除按钮
                // .unlessEditing  编辑时不出现,编辑后才出现清除按钮
                // .always  一直显示清除按钮
                UITextField.appearance().clearButtonMode = .whileEditing
            }
        }
    }
}

  本文自 https://www.codeun.com 发布,相应代码均自主编写并严格审阅和测试,完整代码中包含丰富的学习笔记和使用方式、实用技巧。
  · 如若转载,请注明出处:https://www.codeun.com/archives/894.html ·

(1)
上一篇 2023-02-21
下一篇 2023-03-11

相关推荐

发表回复

登录后才能评论