iOS开发之KVO(swift版)

作者: chasitu | 来源:发表于2019-07-09 18:24 被阅读7次

最近比较有时间,所以在用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
        }
    }
}
  • 需要监听系统类的时候先继承然后重写需要监听的属性就可以
  • 如果是我们自定义的类添加的属性需要添加dynamic修饰,当前类用@objcMembers修饰,需要监听的类和属性都添加修饰

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

相关文章

网友评论

    本文标题:iOS开发之KVO(swift版)

    本文链接:https://www.haomeiwen.com/subject/vbefkctx.html