iOS开发随笔-生活工作点滴

iOS开发之KVO(swift版)

2019-07-09  本文已影响7人  chasitu

最近比较有时间,所以在用swift写我们公司的项目,顺便加深学习swift,今天记录一下KVO吧,因为我感觉写swift的时候使用KVO没有像objective-c那么简单,稍微有点绕,

问题:需要监听UITextField的text属性

  1. 我们objective-c的思路是这样的
TextField.addObserver(self, 
            forKeyPath: "text", 
            options: [.new,.old], 
            context: nil)

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
        if keyPath == "text" {
            textChanged?()
        }
    }
  1. 我们这样写之后回调方法是不调用的,需要继承UITextField写一个自定义类,重写set和get方法
import UIKit

class SHLoginUserNameTextView: UITextField {

    override var text: String!{
        set {
            super.text = newValue
        }
        get {
            return super.text
        }
    }
}

到下班点了,就不多细说了

上一篇下一篇

猜你喜欢

热点阅读