最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Swift實(shí)現(xiàn)監(jiān)聽(tīng)鍵盤(pán)通知及一些處理詳解

 更新時(shí)間:2018年01月28日 11:47:19   作者:ZYiDa  
這篇文章主要給大家介紹了關(guān)于Swift實(shí)現(xiàn)監(jiān)聽(tīng)鍵盤(pán)通知及一些處理的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。

前言

相信研究swift語(yǔ)言的開(kāi)發(fā)者都多多少少了解或者精通Objective—C語(yǔ)言,熟練掌握Objective—C語(yǔ)言的開(kāi)發(fā)者,在學(xué)習(xí)swift語(yǔ)言的過(guò)程中,是比較快速,而又輕松的。本文主要介紹的是關(guān)于Swift監(jiān)聽(tīng)鍵盤(pán)通知及一些處理的相關(guān)資料,之前也做過(guò)類(lèi)似的功能,但是在Swift上面的效果不是很好。今天整理了一下之前小項(xiàng)目中的代碼和思路,很好的解決了在登錄界面登錄按鈕被鍵盤(pán)遮擋的問(wèn)題。

先看效果圖


如下

注冊(cè)鍵盤(pán)通知

//MARK:監(jiān)聽(tīng)鍵盤(pán)通知
 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)
 }

根據(jù)鍵盤(pán)通知做出對(duì)應(yīng)的操作

 //MARK:鍵盤(pán)通知相關(guān)操作
 @objc func keyBoardWillShow(_ notification:Notification){

  DispatchQueue.main.async {
   /*
    每次鍵盤(pán)發(fā)生變化之前,先恢復(fù)原來(lái)的狀態(tài)
    y 是鍵盤(pán)布局的origin.y
    y2 是登錄按鈕的origin.y+height
    如果y>y2,登錄按鈕沒(méi)有被遮擋,不需要向上移動(dòng);反之,按鈕被遮擋,整體需要向上移動(dòng)一部分
    */
   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)
  }
 }

釋放鍵盤(pán)通知

因?yàn)檫@里只有這兩個(gè)通知,所以我選擇了removeObserver(self)來(lái)移除所有通知,當(dāng)然,你也可以根據(jù)通知名稱(chēng)來(lái)逐個(gè)移除。

//MARK:釋放鍵盤(pán)監(jiān)聽(tīng)通知
 func releaseNotification(){
  NotificationCenter.default.removeObserver(self)
 }

經(jīng)測(cè)試,上面的方法在4.0-5.5英寸的iPhone設(shè)備上正常運(yùn)行。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • 深入解析Swift語(yǔ)言編程中的可選鏈

    深入解析Swift語(yǔ)言編程中的可選鏈

    這篇文章主要介紹了深入解析Swift語(yǔ)言編程中的可選鏈,是Swift入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-11-11
  • 使用swift實(shí)現(xiàn)計(jì)算器功能

    使用swift實(shí)現(xiàn)計(jì)算器功能

    這篇文章主要為大家詳細(xì)介紹了使用swift實(shí)現(xiàn)計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Compose聲明式代碼語(yǔ)法對(duì)比React?Flutter?SwiftUI

    Compose聲明式代碼語(yǔ)法對(duì)比React?Flutter?SwiftUI

    這篇文章主要為大家介紹了Compose聲明式代碼語(yǔ)法對(duì)比React?Flutter?SwiftUI來(lái)解釋為什么說(shuō)?Compose?的聲明式代碼最簡(jiǎn)潔,有需要的朋友可以借鑒參考下
    2022-08-08
  • 詳解Swift編程中的常量和變量

    詳解Swift編程中的常量和變量

    這篇文章主要介紹了Swift編程中的常量和變量,是Swift入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-11-11
  • swift如何利用系統(tǒng)庫(kù)將漢字轉(zhuǎn)換為拼音詳解

    swift如何利用系統(tǒng)庫(kù)將漢字轉(zhuǎn)換為拼音詳解

    將漢字轉(zhuǎn)換為拼音更利于我們大家開(kāi)發(fā)搜索功能,所以這篇文章主要給大家介紹了關(guān)于swift如何利用系統(tǒng)庫(kù)將漢字轉(zhuǎn)換為拼音的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-10-10
  • Swift數(shù)組詳細(xì)用法解析

    Swift數(shù)組詳細(xì)用法解析

    這篇文章主要為大家詳細(xì)介紹了Swift數(shù)組詳細(xì)用法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Swift中的類(lèi)class與結(jié)構(gòu)體struct體學(xué)習(xí)筆記

    Swift中的類(lèi)class與結(jié)構(gòu)體struct體學(xué)習(xí)筆記

    和C++一樣,Swfit中同時(shí)擁有類(lèi)與結(jié)構(gòu)體,能夠充分滿(mǎn)足開(kāi)發(fā)者面向?qū)ο蠛兔嫦蜻^(guò)程編程的需求,這里我們就來(lái)看一下Swift中的類(lèi)class與結(jié)構(gòu)體struct體學(xué)習(xí)筆記
    2016-07-07
  • 深入理解swift變量和函數(shù)

    深入理解swift變量和函數(shù)

    Swift 函數(shù)用來(lái)完成特定任務(wù)的獨(dú)立的代碼塊。這篇文章主要介紹了swift變量和函數(shù)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-08-08
  • RxSwift學(xué)習(xí)之Observable的新建、訂閱及取消訂閱

    RxSwift學(xué)習(xí)之Observable的新建、訂閱及取消訂閱

    這篇文章主要給大家介紹了關(guān)于RxSwift學(xué)習(xí)教程之Observable的相關(guān)資料,文中詳細(xì)的給大家介紹了關(guān)于新建Observable、訂閱Observable和取消訂閱并消除內(nèi)存泄漏等相關(guān)的內(nèi)容,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-09-09
  • Swift3遷移至Swift4可能遇到的問(wèn)題小結(jié)

    Swift3遷移至Swift4可能遇到的問(wèn)題小結(jié)

    每當(dāng)看到新的編程語(yǔ)言我總是會(huì)有相當(dāng)大的興趣,所以下面這篇文章主要給大家介紹了關(guān)于Swift3遷移至Swift4可能遇到的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06

最新評(píng)論

仁布县| 绥宁县| 永定县| 新宾| 临沭县| 封开县| 洪泽县| 湖南省| 宜城市| 侯马市| 江山市| 仪陇县| 景东| 屯留县| 六安市| 定南县| 冷水江市| 嘉鱼县| 乌兰察布市| 航空| 漳浦县| 遂昌县| 友谊县| 工布江达县| 改则县| 洞口县| 贵定县| 石狮市| 红桥区| 桑植县| 云浮市| 肥城市| 盐津县| 绥化市| 罗甸县| 河间市| 治县。| 遵化市| 麻城市| 大关县| 定州市|