通過NSNotification來監聽鍵盤彈出和彈回

在通知中心建立一個廣播來監聽鍵盤的彈出和彈回,在監聽事件中加入觸發事件的一些操作。

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillChange:) name:UIKeyboardWillChangeFrameNotification object:nil];[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardwillhide:) name:UIKeyboardWillHideNotification object:nil];

監聽鍵盤的一些通知:

    // 鍵盤的frame發生改變時發出的通知(位置和尺寸)//    UIKeyboardWillChangeFrameNotification//    UIKeyboardDidChangeFrameNotification// 鍵盤顯示時發出的通知//    UIKeyboardWillShowNotification//    UIKeyboardDidShowNotification// 鍵盤隱藏時發出的通知//    UIKeyboardWillHideNotification//    UIKeyboardDidHideNotification

在這里我需要實現的效果(如下圖)是在在鍵盤彈出時,使下方的toolbar向上移動到相應位置,因此需要知道鍵盤的高度和彈出動畫的時間,通過廣播監聽來得到鍵盤的frame和彈出動畫時間:

NSString *duration = userInfo[UIKeyboardAnimationDurationUserInfoKey];CGRect keyboardFrame = [userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];

再通過動畫效果,改變tableview和toolbar的frame,使得鍵盤在彈出時不會被遮擋:

 [UIView animateWithDuration:[duration doubleValue] delay:0.0 options:UIViewAnimationOptionCurveLinear animations:^{_tableview.frame = CGRectMake(0, 64 , SIZE.width, SIZE.height - 64 - keyboardFrame.size.height - 50);footView.frame = CGRectMake(0, SIZE.height - keyboardFrame.size.height - 50, SIZE.width, 50);} completion:^(BOOL finished) {NSIndexPath *path = [NSIndexPath indexPathForRow:_dataArray.count - 1 inSection:0];[_tableview scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionBottom animated:YES];}];

效果圖:

轉載于:https://www.cnblogs.com/moxuexiaotong/p/4928944.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/397358.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397358.shtml
英文地址,請注明出處:http://en.pswp.cn/news/397358.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Xcode緩存數據清除

1. 移除 APP 打包的ipa歷史版本(Archives) 不可恢復,就是你打的包,如果需要dysm文件,及時備份 路徑:~/Library/Developer/Xcode/Archives 2. 移除對舊設備的支持 可重新生成;再連接舊設備調試時,會重新自動…

IT綜合學習網站收集

最近整理了一下曾經使用過的IT從入門到廣泛的綜合類基礎學習網站,記錄下來,以便初學者使用: 1.http://www.w3school.com.cn/ 中文版基礎在線學習平臺 2.http://www.runoob.com/ 中文版基礎在線學習平臺(和W3類似) 3.h…

電大計算機網絡網考,電大計算機網絡(本)學習周期01任務A_0009答案

一、單項選擇題(共 20 道試題,共 60 分。)1. ( )和數據通信是計算機網絡最基本的兩大功能。A. 資源共享B. 病毒管理C. 用戶管理D. 站點管理2. 計算機網絡系統是由通信子網和( )子網組成的。A. 資源B. 數字C. 信息D. 模擬3. 網絡資源子網負責( )。A. 數據通信B. 數字…

mac安裝gdb及為gdb進行代碼簽名

1. 安裝gdb GDB作為一個強大的c/c調試工具,一直是程序猿們的良好伴侶,但轉到Mac os才發現竟然沒有默認安裝,所幸還有強大的homebrew工具: brew install homebrew/dupes/gdb然后就是漫長的等待編譯安裝時間了,安裝完成后…

Python學習---Django的基礎操作180116

Django創建數據庫操作 django流程之model實例 settigs.py:更改Django2.0.1的配置,更新為之前的路徑配置 DIRS: [os.path.join(BASE_DIR, templates)], # 設置templates的路徑為Django以前版本 # DIRS: [], # 注釋掉該行,此為Django 2.0…

PO、VO、DAO、BO、POJO

一、PO :(persistant object ),持久對象 可以看成是與數據庫中的表相映射的java對象。使用Hibernate來生成PO是不錯的選擇。二、VO :(value object) ,值對象通常用于業務層之間的數據傳遞,和PO一樣也是僅僅包含數據而已。但應是抽象出的業務對…

計算機網絡是將地理知識,計算機網絡的基礎知識精選.ppt

計算機網絡的基礎知識精選習題演練 1,WAN的中文含義是()。   A. 局域網   B. 城域網 C. 廣域網   D. 增值網 2,LAN的中文含義是()。   A. 局域網 B. 城域網 C. 廣域網 D. 增值網 3,MAN的中文含義是()。   A. 局域網   B. 城域網 C…

VBA——Msgbox

MsgBox(prompt[,buttons][,title][,helpfile,context]) 參數說明 prompt - 必需的參數。在對話框中顯示為消息的字符串。提示的最大長度大約為1024個字符。 如果消息擴展為多行,則可以使用每行之間的回車符(Chr(13))或換行符(Chr(10))來分隔行。buttons - 可選參數。…

訂閱Jenkins的郵件列表,獲取最新的信息

進入https://jenkins.io/content/mailing-lists/ 點擊感興趣的話題 選擇【archive】跳轉到谷歌討論組 最后,點擊左上角的【Subscribe】即可加入Google Groups 備注:其實谷歌討論組是一個很好用的東西,每個人都可以上去建,對于集成…

內存的管理方式

1、內存的區域 對于內存的區域劃分上,不同的區域劃分上都各有不同。 劃分1: 代碼區、堆、棧、 全局區(靜態存儲區)、 文字常量區、 劃分2: 代碼段、堆、棧、 data段、BSS段、文字常量區 全局區: 又成為靜…

英語四六級和計算機二級是一,大學里最難考證書排名,四六級和計算機根本排不進前三...

大學是我們提高自身技能最好的一個時期,除了平時的課程和一些社團活動之外,還有一件最最必不可少的事情,那就是考證,而這也是為我們以后工作打好基礎,為自己多準備一些敲門磚。我國各個行業都有屬于自己的證書&#xf…

Scrapy爬蟲中的鏈接提取器LinkExtractor

今天在編寫Scrapy爬蟲的時候接觸到了LinkExtractor,遂學習了一下這個鏈接提取器。 Link Extractors 是那些目的僅僅是從網頁(scrapy.http.Response 對象)中抽取最終將會被follow鏈接的對象。使用場景就是在一個網站中通過自定義規則提取到自己想要的那些網…

Fedora 安裝后需要做的第一件事

一直以來,Red Hat 系的許多教程,都會建議你關閉 SELinux。確實,啟用 SELinux 可能會造成許多莫名其妙的錯誤。但在實際生產環境,甚至是用戶工作站,Red Hat 都建議將 SELinux 設為 enforcing 模式,因為它在關…

html文件怎么導出stl文件,各種3D建模軟件導出STL文件的小技巧(一)

很多用戶在提交3D模型文件的時候,常常有這樣的困惑:什么是STL 格式文件,怎么獲取STL 格式文件呢?STL 格式文件是在計算機圖形應用系統中,用于表示三角形網格的一種文件格式。它也是3D打印機在執行3D打印程序時&#xf…

angularjs 中的scope繼承關系——(2)

轉自&#xff1a;http://www.lovelucy.info/understanding-scopes-in-angularjs.html angularjs 中的scope繼承關系 ng-include 假設在我們的 controller 中&#xff0c; $scope.myPrimitive 50; $scope.myObject {aNumber: 11}; HTML 為&#xff1a; <script type&quo…

C# DatatTable某一列是否有重復判斷

public bool HasRepeatData(DataTable dt,string[] colName) { bool flagfalse; DataView myDataView new DataView(dt); if (myDataView.ToTable(true, colName).Rows.Count < dt.Rows.Count) { flag true; } return flag; }轉載于:https://www.cnblogs.com/clj0102/p/93…

cordova 項目添加splash啟動界面

需求&#xff1a;cordova項目啟動添加啟動界面&#xff0c;并在設備初始化完成后自動隱藏splash1.新建項目cordova create Mypro com.test.pro proName2.添加平臺cd Mypro&#xff08;進入目錄&#xff09;cordova platform add androidcordova platform add iOS3.添加splash插…

遼寧大學計算機專業接收調劑,目前有計算機專業調劑通知的學校,不斷更新—3月26日更新,新增遼寧大學等...

本帖最后由 yunnyforo 于 2012-3-26 21:16 編輯注&#xff1a;我對研究所關注度不高&#xff0c;關于研究所的調劑通知可能不及時&#xff0c;見諒。大家可以關注中國教育在線考研調劑信息站&#xff1a;http://kaoyan.eol.cn/html/ky/tiaoji/index.shtml&#xff0c;個人感覺這…

Android界面菜單(4)—快捷菜單

2019獨角獸企業重金招聘Python工程師標準>>> 快捷菜單 當用戶點擊界面上某個元素超過2秒后&#xff0c;將啟動注冊到該界面的快捷菜單。 步驟&#xff1a; 1.代碼動態生成菜單 final static int CONTEXT_MENU_1 Menu.FIRST;final static int CONTEXT_MENU_2 Menu…

Echarts地圖編寫

1.引入echarts庫文件 <script charset"utf-8" type"text/javascript" language"javascript" src"echarts-2.2.7/doc/example/www/js/echarts.js"></script> 2.在頁面中新建div用于地圖展示 <div id"main" st…