UITextfield 键盘外观的扩展

Posted

技术标签:

【中文标题】UITextfield 键盘外观的扩展【英文标题】:extension for UITextfield keyboard appearance 【发布时间】:2019-09-22 18:43:25 【问题描述】:

在我的应用程序中,我将添加不同的主题,但现在,我想编写一个可以处理扩展程序中的键盘外观的扩展程序。 第一步,我只想控制它的外观,所以我设置它应该是.dark,但它不起作用。你能告诉我这个简单扩展的问题在哪里吗? 我只是希望它自动更改键盘外观而不做任何其他事情

extension UITextView 


  var keyboardApperance: UIKeyboardAppearance? 
    get 
        return self.keyboardAppearance
    
    set 
         self.keyboardAppearance = .dark
    
  

【问题讨论】:

你是怎么用这个的? 我只是想让它自动改变键盘外观而不做任何其他事情 【参考方案1】:

仅创建扩展不会更改您的 UITextView 属性。

您可以创建自己的自定义 UITextView 并使用它来代替 UITextView。

如果您使用的是故事板或 xib,请不要忘记设置您的班级。

@IBDesignable
public class CustomDarkTextView: UITextView 

    public override init(frame: CGRect, textContainer: NSTextContainer?) 
        super.init(frame: frame, textContainer: textContainer)
        setup()
    

    public convenience init(frame: CGRect) 
        self.init(frame: frame, textContainer: nil)
        setup()
    

    public convenience init() 
        self.init(frame: CGRect.zero, textContainer: nil)
        setup()
    

    public required init?(coder aDecoder: NSCoder) 
        super.init(coder: aDecoder)
        setup()
    

    func setup() 
        self.keyboardAppearance = UIKeyboardAppearance.Dark
    

【讨论】:

【参考方案2】:

尝试使用这样的功能

extension UITextView 
    func setKeyboardToDark() 
        self.keyboardAppearance = .dark
    

    func setKeyboardToLight() 
        self.keyboardAppearance = .light
    

【讨论】:

感谢您的帮助,但不幸的是它不起作用 @JOnney 你真的打电话给someTextfield.setKeyboardToDark() 吗? 如果someTextField 的类型是UITextView,那么您的问题的答案^^^ 是肯定的【参考方案3】:
  extension UITextView 
            func setDarkKeyboard() 
            self.keyboardAppearance = UIKeyboardAppearance.dark
           

            func setLightKeyboard() 
            self.keyboardAppearance = UIKeyboardAppearance.light
          
     

【讨论】:

以上是关于UITextfield 键盘外观的扩展的主要内容,如果未能解决你的问题,请参考以下文章

点击 UITextField 时如何阻止键盘显示?

UITextField 的初始键盘动画的超慢滞后/延迟

如何设置点击Text Field不弹出键盘

在键盘应用程序扩展中使用 UITextField

使用 iOS 版 Facebook SDK 3.5 时更改键盘外观

在自定义键盘扩展中检测输入对象视图类型