你好,歡迎來到IOS教程網

 Ios教程網 >> IOS訊息 >> 關於IOS >> IOS研究之多個UITextField的鍵盤處理

IOS研究之多個UITextField的鍵盤處理

編輯:關於IOS

在IOS開發中使用UITextField時常需要考慮的問題就是鍵盤的處理。有時候,彈出的鍵盤會將UITextField區域覆蓋,影響用戶輸入。這個時候就要將視圖上移。這個時候我們需要考慮兩點: 1,修改視圖坐標的時機; 2,上移的偏移是多大。 3,UITableView設置Section間距 不明白的可以看看。 我根據自己實際操作的實現方法如下: 1,獲取正在編輯的UITextField的指針 定義一個全局的UITextField的指針 UITextField *tempTextFiled; 在UITextFieldDelegate代理方法-(void)textFieldDidBeginEditing:(UITextField *)textField中 修正tempTextFiled的值為當前正在編輯的UITextField的地址。 -(void)textFieldDidBeginEditing:(UITextField *)textField { tempTextFiled = textField; }
2,配置鍵盤處理事件 在- (void)viewDidLoad中實現鍵盤監聽: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; 實現鍵盤顯示和鍵盤隱藏方法 在鍵盤顯示方法中獲取鍵盤高度,並配置鍵盤視圖位移【值得一提的是,該方法會在用戶切換中英文輸入法的時候也會執行,因此不必擔心在切換到中文輸入法時鍵盤有多出一部分的問題】。 - (void)keyboardWillShow:(NSNotification *)notification
{
NSDictionary * info = [notification userInfo];
NSValue *avalue = [info objectForKey:UIKeyboardFrameEndUserInfoKey];
CGRect keyboardRect = [self.view convertRect:[avalue CGRectValue] fromView:nil];
double keyboardHeight=keyboardRect.size.height;//鍵盤的高度

NSLog(@"textField superview].frame.origin.y = %f",[tempTextFiled superview].frame.origin.y);
NSLog(@"keyboardHeight = %f",keyboardHeight);
if ( ([tempTextFiled superview].frame.origin.y + keyboardHeight + REGISTERTABLE_CELL_HEGHIT) >= ([[UIScreen mainScreen] bounds].size.height-44))
{
//此時,編輯框被鍵盤蓋住,則對視圖做對應的位移
CGRect frame = CGRectMake(0, 44, 320, [[UIScreen mainScreen] bounds].size.height-45);
frame.origin.y -= [tempTextFiled superview].frame.origin.y + keyboardHeight + REGISTERTABLE_CELL_HEGHIT +20 - [[UIScreen mainScreen] bounds].size.height + 44;//偏移量=編輯框原點Y值+鍵盤高度+編輯框高度-屏幕高度
registerTableView.frame=frame;
}
} 然後實現鍵盤隱藏的處理: 在UITextFieldDelegate代理方法 -(void)textFieldDidEndEditing:(UITextField *)textFieldView或者 - (void)keyboardWillHide:(NSNotification *)notification 方法中實現視圖復位,如下代碼: CGRect frame = registerTableView.frame; frame.origin.y = 44;//修改視圖的原點Y坐標即可。 registerTableView.frame=frame;
3,移除監聽 在-(void)viewDidDisappear:(BOOL)animated或者dealloc方法中移除監聽 [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidShowNotification object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidHideNotification object:nil]; 這樣,無論我們的界面上有多少UITextField,只需要簡單的幾部就可以實現UITextField不被鍵盤蓋住。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved