最新国产好看的视频,伊人天堂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ò)類似的功能,但是在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ù)通知名稱來(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中的類class與結(jié)構(gòu)體struct體學(xué)習(xí)筆記

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

    和C++一樣,Swfit中同時(shí)擁有類與結(jié)構(gòu)體,能夠充分滿足開(kāi)發(fā)者面向?qū)ο蠛兔嫦蜻^(guò)程編程的需求,這里我們就來(lái)看一下Swift中的類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)論

丹寨县| 兴安县| 临桂县| 定远县| 乌兰县| 诏安县| 新宁县| 连平县| 铜梁县| 巨野县| 刚察县| 常宁市| 建阳市| 留坝县| 泸溪县| 太康县| 商洛市| 阳谷县| 绥滨县| 林口县| 始兴县| 建水县| 通州市| 永春县| 和顺县| 台南县| 监利县| 孟津县| 泌阳县| 雷波县| 灵宝市| 三门峡市| 惠州市| 上饶县| 大丰市| 西城区| 阿克| 鄯善县| 华坪县| 大化| 大城县|