界面随键盘顶起来
在你的代碼相關(guān)位置添加兩個(gè)事件
UIKeyboardWillShowNotification,這個(gè)是鍵盤即將彈出的事件通知名稱
UIKeyboardWillHideNotification,這個(gè)是鍵盤即將消失的事件通知名稱
在這兩個(gè)通知的回調(diào)方法中處理你的工具條動(dòng)畫就行了,鍵盤的相關(guān)參數(shù)會(huì)在NSNotification實(shí)例中的userInfo對(duì)象中傳過(guò)去(鍵盤的高度、寬度、鍵盤動(dòng)畫的duration等),你可以在回調(diào)函數(shù)中根據(jù)這些參數(shù)處理你的動(dòng)畫,讓工具條和鍵盤動(dòng)畫達(dá)到同步的效果。
如果你的系統(tǒng)是ios5,那需要注意一點(diǎn)的就是,不同輸入法的鍵盤高度不同了(可能是216或252),你可能需要根據(jù)鍵盤的具體高度來(lái)指定工具條的高度,而不能統(tǒng)一寫死為216了。
同時(shí),ios5里面還增加了一個(gè)事件通知名稱:
UIKeyboardWillChangeFrameNotification
這個(gè)通知會(huì)在鍵盤即將改變其大小的時(shí)候發(fā)出來(lái)(比如說(shuō)鍵盤彈出、收起、用戶切換輸入法、用戶分享鍵盤時(shí)引起的鍵盤大小變化),如果你想要你的工具條嚴(yán)格保持在鍵盤頂部的時(shí)候,就需要監(jiān)聽這個(gè)事件。
今天在ios5里面偶然發(fā)現(xiàn)了問(wèn)題,補(bǔ)充一下。
UIKeyboardWillChangeFrameNotification
這個(gè)通知會(huì)在鍵盤即將改變其大小或位置的時(shí)候發(fā)出來(lái),包括:
1:鍵盤彈出、收起。
2:用戶切換輸入法。
3:用戶分割鍵盤(iPad專有)
4:如果你在viewWillDisappear中讓鍵盤收起(比如說(shuō)textField resignFirstResponder),鍵盤似乎不會(huì)收起,而只是會(huì)改變frame的orig值。
?
參考以下代碼(將self.view換成需要上移的view即可):
?
-(void)keyboardWillChangeFrame:(NSNotification *)notify{ //NSLog(@"=====%@,%@",notify.object,notify.userInfo); self.inputView__.backgroundColor=[UIColor groupTableViewBackgroundColor];NSDictionary *userInfo=notify.userInfo; NSString *keyboard_frame_begin_NSRectString= [userInfo[UIKeyboardFrameBeginUserInfoKey] description]; NSString *keyboard_frame_begin_CGRectString= nil; if ([keyboard_frame_begin_NSRectString hasPrefix:@"NSRect"]) {keyboard_frame_begin_CGRectString=[keyboard_frame_begin_NSRectString stringByReplacingOccurrencesOfString:@"NSRect"withString:@"CGRect" ];}else if( [keyboard_frame_begin_NSRectString hasPrefix:@"CGRect"]){keyboard_frame_begin_CGRectString=keyboard_frame_begin_NSRectString;} CGRect keyboard_frame_begin= CGRectFromString(keyboard_frame_begin_CGRectString);NSString *keyboard_frame_end_NSRectString= [userInfo[UIKeyboardFrameEndUserInfoKey] description]; NSString *keyboard_frame_end_CGRectString= nil; if ([keyboard_frame_end_NSRectString hasPrefix:@"NSRect"]) {keyboard_frame_end_CGRectString=[keyboard_frame_end_NSRectString stringByReplacingOccurrencesOfString:@"NSRect"withString:@"CGRect" ];}else if( [keyboard_frame_end_NSRectString hasPrefix:@"CGRect"]){keyboard_frame_end_CGRectString=keyboard_frame_end_NSRectString;} CGRect keyboard_frame_end= CGRectFromString(keyboard_frame_end_CGRectString);CGRect rect=self.view.frame;CGFloat y_keyboard_begin=keyboard_frame_begin.origin.y;CGFloat y_keyboard_end=keyboard_frame_end.origin.y;CGFloat y_current=CGRectGetMinY(rect); CGFloat y_keyboard_change=y_keyboard_end-y_keyboard_begin; CGFloat y= y_current +y_keyboard_change; //NSLog(@"y===========%f",y );[UIView animateWithDuration:0.0 animations:^{ self.view.frame=CGRectMake(0, y, CGRectGetWidth(rect), CGRectGetHeight(rect));}];}轉(zhuǎn)載于:https://www.cnblogs.com/LiuLady12138/p/4708915.html
總結(jié)
- 上一篇: git pull时冲突的几种解决方式
- 下一篇: HDU 4911