iOS IQKeyboardManager 管理非ViewCon

2021-01-19  本文已影响0人  東玖零

前提:我在self.navigationController?.view上加遮罩层,遮罩层上有输入框。
现像:当输入时self.view有变化,当前输入框和它的父view却不化变化。

思路1:IQKeyboardManager这个库是不是有可以添加指定响应view或controller,网上种找,国内全是抄抄,为了快速实现没去读源码,总之没找到相关的设置。
思路2:既然self.view有变化,就监听self.view的frame变化去修改遮罩层的位置,试了一下没问题,那们就上代码。

override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        view.addObserver(self, forKeyPath: "frame", options: [.new,.old], context: nil)
}

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
    if let old = change?[.oldKey] as? CGRect, let new = change?[.newKey] as? CGRect {
        let modify = new.origin.y - old.origin.y;
        if let bracket = alert {
            var rect = bracket.frame;
            rect.origin.y += modify
            bracket.frame = rect
        }
    }
}

上一篇下一篇

猜你喜欢

热点阅读