iOS 文字輸入框隨鍵盤上移
iPhone開發時,鍵盤彈出來後可能會蓋住輸入框,這個問題是需要自己解決的,不像android系統解決了,很久沒寫了,發現一個哥們寫的還不錯,轉一下:
- (void)keyboardWillShow:(NSNotification *)notification {
NSDictionary *userInfo = [notification userInfo];
NSValue* aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
CGRect keyboardRect = [aValue CGRectValue];
keyboardRect = [self.view convertRect:keyboardRect fromView:nil];
// 根據老的 frame 設定新的 frame
CGRect newTextViewFrame = _inputTextView.frame; // by michael
newTextViewFrame.origin.y = keyboardRect.origin.y - _inputTextView.frame.size.height;
// 鍵盤的動畫時間,設定與其完全保持一致
NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];
NSTimeInterval animationDuration;
[animationDurationValue getValue:&animationDuration];
// 鍵盤的動畫是變速的,設定與其完全保持一致
NSValue *animationCurveObject = [userInfo valueForKey:UIKeyboardAnimationCurveUserInfoKey];
NSUInteger animationCurve;
[animationCurveObject getValue:&animationCurve];
// 開始及執行動畫
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:animationDuration];
[UIView setAnimationCurve:(UIViewAnimationCurve)animationCurve];
_inputTextView.frame = newTextViewFrame;
[UIView commitAnimations];
}
鍵盤消失時的處理,文字輸入框回到頁面底部。
- (void)keyboardWillHide:(NSNotification *)notification {
NSDictionary* userInfo = [notification userInfo];
// 鍵盤的動畫時間,設定與其完全保持一致
NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];
NSTimeInterval animationDuration;
[animationDurationValue getValue:&animationDuration];
// 鍵盤的動畫是變速的,設定與其完全保持一致
NSValue *animationCurveObject =[userInfo valueForKey:UIKeyboardAnimationCurveUserInfoKey];
NSUInteger animationCurve;
[animationCurveObject getValue:&animationCurve];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:animationDuration];
[UIView setAnimationCurve:(UIViewAnimationCurve)animationCurve];
CGRect newTextViewFrame = _inputTextView.frame;
newTextViewFrame.origin.y = DEVICE_HEIGHT - _inputTextView.frame.size.height;
_inputTextView.frame = newTextViewFrame;
[UIView commitAnimations];
}
主要是根據鍵盤的高度來收縮介面的內容,重置輸入區域的frame。
轉自:http://blog.csdn.net/prevention
相關文章
- iOS 防止輸入時鍵盤覆蓋掉輸入框iOS
- iOS點選輸入框時自動移動到鍵盤之上iOS
- 利用 Angular Directive 和 @HostBinding 實現輸入文字框隨著鍵盤輸入自動變色效果Angular
- React Native踩坑指南:ios鍵盤遮擋輸入框React NativeiOS
- iOS -UITextField/UITextView之鍵盤遮擋輸入框解決方法iOSUITextView
- iOS解決鍵盤彈出遮擋輸入框問題iOS
- h5 ios輸入框與鍵盤 相容性優化H5iOS優化
- 隱藏的輸入框調起軟鍵盤問題--ios/安卓iOS安卓
- iOS軟鍵盤遮擋UITableView內文字框問題iOSUIView
- 利用flex佈局解決ios輸入框被鍵盤遮擋問題FlexiOS
- WPF 自定義文字框輸入法 IME 跟隨游標
- input只能輸入文字框
- 文字框輸入文字倒計詳解
- 修復安卓鍵盤彈起擋住輸入框bug安卓
- 輸入框軟鍵盤遮擋問題解決方案
- Android 軟鍵盤蓋住輸入框的問題Android
- 安卓和ios鍵盤擋住輸入內容安卓iOS
- 輸入框只能輸入負數,整數,2位小數(鍵盤彈起事件)事件
- JavaScript 文字框只能輸入數字JavaScript
- JavaScript 文字框輸入內容同步JavaScript
- jQuery文字框輸入內容同步jQuery
- javascript限制文字框輸入長度JavaScript
- JS 文字輸入框放大鏡效果JS
- 文字框只能輸入數字 javascriptJavaScript
- 完美主義:實現iOS輸入框自動移動iOS
- JAVA 接收鍵盤輸入Java
- Flutter仿微信,支付寶密碼輸入框+自定義鍵盤Flutter密碼
- 文字框限制輸入字數的JSJS
- 文字框只能輸入數字程式碼
- jQuery文字框內容輸入同步功能jQuery
- iOS Swift 輸入框限制長度iOSSwift
- iOS清除輸入框內陰影iOS
- 一個數字鍵盤引發的血案——移動端H5輸入框、游標、數字鍵盤全假套件實現H5套件
- react在安卓下輸入框被手機鍵盤遮擋問題React安卓
- win10電腦鍵盤無法輸入怎麼辦 win10電腦鍵盤無法輸入文字如何修復Win10
- Axure之解決文字框無法輸入
- 限定文字框輸入字串長度程式碼字串
- Objective-C:多行文字輸入框(UITextView)ObjectUITextView