国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Swift > 正文

Swift實現監聽鍵盤通知及一些處理詳解

2020-03-09 17:42:32
字體:
來源:轉載
供稿:網友

前言

相信研究swift/233652.html">swift/81033.html">swift語言的開發者都多多少少了解或者精通Objective—C語言,熟練掌握Objective—C語言的開發者,在學習swift語言的過程中,是比較快速,而又輕松的。本文主要介紹的是關于Swift監聽鍵盤通知及一些處理的相關資料,之前也做過類似的功能,但是在Swift上面的效果不是很好。今天整理了一下之前小項目中的代碼和思路,很好的解決了在登錄界面登錄按鈕被鍵盤遮擋的問題。

先看效果圖

swift,監聽鍵盤,監聽鍵盤彈出,鍵盤通知

如下

注冊鍵盤通知

//MARK:監聽鍵盤通知 func registerNotification(){  NotificationCenter.default.addObserver(self,            selector: #selector(keyBoardWillShow(_ :)),            name: NSNotification.Name.UIKeyboardWillShow,            object: nil)  NotificationCenter.default.addObserver(self,            selector: #selector(keyBoardWillHide(_ :)),            name: NSNotification.Name.UIKeyboardWillHide,            object: nil) }

根據鍵盤通知做出對應的操作

 //MARK:鍵盤通知相關操作 @objc func keyBoardWillShow(_ notification:Notification){  DispatchQueue.main.async {   /*    每次鍵盤發生變化之前,先恢復原來的狀態    y 是鍵盤布局的origin.y    y2 是登錄按鈕的origin.y+height    如果y>y2,登錄按鈕沒有被遮擋,不需要向上移動;反之,按鈕被遮擋,整體需要向上移動一部分    */   self.view.center = CGPoint.init(x: Width/2, y: Height/2)   let user_info = notification.userInfo   let keyboardRect = (user_info?[UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue   let y = keyboardRect.origin.y   let y2 = (self.nextStep?.frame.origin.y)! + (self.nextStep?.frame.size.height)! + 5   let offset_y = y2 > y ? (y2-y):(0)   UIView.animate(withDuration: 0.25, animations: {    self.view.center = CGPoint.init(x: Width/2, y: self.view.center.y - offset_y)   })  } } @objc func keyBoardWillHide(_ notification:Notification){  DispatchQueue.main.async {   self.view.center = CGPoint.init(x: Width/2, y: Height/2)  } }

釋放鍵盤通知

因為這里只有這兩個通知,所以我選擇了removeObserver(self)來移除所有通知,當然,你也可以根據通知名稱來逐個移除。

//MARK:釋放鍵盤監聽通知 func releaseNotification(){  NotificationCenter.default.removeObserver(self) }

經測試,上面的方法在4.0-5.5英寸的iPhone設備上正常運行。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到swift教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平原县| 元谋县| 休宁县| 霍林郭勒市| 宣城市| 开阳县| 香河县| 合山市| 曲松县| 咸丰县| 平陆县| 富民县| 吉安县| 安西县| 东明县| 抚顺市| 临沭县| 贡嘎县| 洮南市| 中牟县| 池州市| 乌拉特后旗| 祁阳县| 增城市| 松滋市| 乌拉特后旗| 高碑店市| 乡宁县| 类乌齐县| 阳西县| 临西县| 大邑县| 宁都县| 玛曲县| 巴彦县| 梁山县| 蛟河市| 公主岭市| 大丰市| 进贤县| 长沙县|