swift(监听与响应)

2019-08-27  本文已影响0人  cyhai
添加一个view并在view上加一个单击手势
 self.tapGeview = UIView.init(frame: CGRect(origin:CGPoint(x:100,y:200),size:CGSize(width:200, height:100)));
//添加一个手势
 let tapGe:UITapGestureRecognizer = UITapGestureRecognizer.init(target: self, action:#selector(tapGeBlicked(tap:)))
 self.tapGeview?.addGestureRecognizer(tapGe)
self.tapGeview?.backgroundColor = UIColor.orange
        self.view.addSubview(self.tapGeview!)
响应单击手势
 @objc func tapGeBlicked(tap:UITapGestureRecognizer) -> Void {
        print("手势单击")       
    }
添加kvo监听

创建一个kvo监听的类,并定义一个要监听的对象


image.png
创建一个kvcPer的对象
var kvoer:kvcPer?
初始化,并添加监听
 self.kvoer = kvcPer();
 self.kvoer?.addObserver(self, forKeyPath:"kvotest", options: .new, context:nil)
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
      
        if keyPath == "kvotest" {
            print("kvo监听\(String(describing: kvoer?.kvotest))")
        }
        
        if (object as? kvcPer == kvoer) {
            print("kvo监听xxxxxxx")
        } else {
            
        }
        
    }
在刚才的单击响应的函数添加监听的触发(值的改变)
@objc func tapGeBlicked(tap:UITapGestureRecognizer) -> Void {
        print("手势单击")
        kvoer?.setValue("手势单击响应监听", forKeyPath: "kvotest")
       
    }

单击最开始创建的view就能看到监听的结果

上一篇下一篇

猜你喜欢

热点阅读