栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Swift使用键盘移动视图

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Swift使用键盘移动视图

这是一个解决方案,无需处理从一个textField到另一个的切换:

 override func viewDidLoad() {        super.viewDidLoad()        NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name: UIKeyboardWillShowNotification, object: nil)        NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name: UIKeyboardWillHideNotification, object: nil)     }func keyboardWillShow(notification: NSNotification) {     if let keyboardSize = (notification.userInfo?[UIKeyboardframeEndUserInfoKey] as? NSValue)?.CGRectValue() {        self.view.frame.origin.y -= keyboardSize.height    } }func keyboardWillHide(notification: NSNotification) {    self.view.frame.origin.y = 0}

要解决此问题,请用以下两个函数

keyboardWillShow/Hide
替换它们:

func keyboardWillShow(notification: NSNotification) { if let keyboardSize = (notification.userInfo?[UIKeyboardframeEndUserInfoKey] as? NSValue)?.CGRectValue() {        if view.frame.origin.y == 0 { self.view.frame.origin.y -= keyboardSize.height        }    }        }func keyboardWillHide(notification: NSNotification) {    if view.frame.origin.y != 0 {        self.view.frame.origin.y = 0    }}

编辑SWIFT 3.0:

override func viewDidLoad() {    super.viewDidLoad()     NotificationCenter.default.addObserver(self, selector: #selector(ViewController.keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil)    NotificationCenter.default.addObserver(self, selector: #selector(ViewController.keyboardWillHide), name: NSNotification.Name.UIKeyboardWillHide, object: nil)    }@objc func keyboardWillShow(notification: NSNotification) { if let keyboardSize = (notification.userInfo?[UIKeyboardframeEndUserInfoKey] as? NSValue)?.cgRectValue {        if self.view.frame.origin.y == 0 { self.view.frame.origin.y -= keyboardSize.height        }    }        }@objc func keyboardWillHide(notification: NSNotification) {    if self.view.frame.origin.y != 0 {        self.view.frame.origin.y = 0    }}

编辑SWIFT 4.0:

override func viewDidLoad() {    super.viewDidLoad()     NotificationCenter.default.addObserver(self, selector: #selector(ViewController.keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil)    NotificationCenter.default.addObserver(self, selector: #selector(ViewController.keyboardWillHide), name: NSNotification.Name.UIKeyboardWillHide, object: nil)    }@objc func keyboardWillShow(notification: NSNotification) { if let keyboardSize = (notification.userInfo?[UIKeyboardframeEndUserInfoKey] as? NSValue)?.cgRectValue {        if self.view.frame.origin.y == 0 { self.view.frame.origin.y -= keyboardSize.height        }    }        }@objc func keyboardWillHide(notification: NSNotification) {    if self.view.frame.origin.y != 0 {        self.view.frame.origin.y = 0    }}

编辑SWIFT 4.2:

override func viewDidLoad() {    super.viewDidLoad()     NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)}@objc func keyboardWillShow(notification: NSNotification) {    if let keyboardSize = (notification.userInfo?[UIResponder.keyboardframeEndUserInfoKey] as? NSValue)?.cgRectValue {        if self.view.frame.origin.y == 0 { self.view.frame.origin.y -= keyboardSize.height        }    }}@objc func keyboardWillHide(notification: NSNotification) {    if self.view.frame.origin.y != 0 {        self.view.frame.origin.y = 0    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/668771.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号