【问题标题】:Is there a way to override a view modifier?有没有办法覆盖视图修饰符?
【发布时间】:2021-03-23 09:00:20
【问题描述】:

我有一个自定义的TextField,并且希望能够在CustomTextInputField 上使用.keyboardType(.numberPad) 修饰符,而不必通过初始化程序发送它。这是否可以覆盖修饰符或通过环境访问键盘类型,还有其他建议吗?

struct CustomTextInputField: View {

    @Binding private var text: String

    init(text: Binding<String>) {
        self._text = text
    }

    var body: some View {
        TextField("Type Text Here", text: $text)
    }
}

【问题讨论】:

    标签: ios swift swiftui swiftui-environment


    【解决方案1】:

    是的,我们可以为自定义视图实现自己的泛型修饰符变体。这是可能的解决方案:

    struct CustomTextInputField: View {
        
        @Binding private var text: String
        
        private var keyboard = UIKeyboardType.default
        
        init(text: Binding<String>) {
            self._text = text
        }
        
        var body: some View {
            TextField("Type Text Here", text: $text)
                .keyboardType(keyboard)
        }
        
        func keyboardType(_ type: UIKeyboardType) -> some View {
            var result = self
            result.keyboard = type
            return result
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-27
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      • 2014-11-29
      • 1970-01-01
      • 2012-09-03
      • 2011-12-25
      相关资源
      最近更新 更多