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

2021-12-29 22:28:50 字數 1793 閱讀 9813

在ios開發中使用uitextfield時常需要考慮的問題就是鍵盤的處理。有時候,彈出的鍵盤會將uitextfield區域覆蓋,影響使用者輸入。這個時候就要將檢視上移。這個時候我們需要考慮兩點:

1,修改檢視座標的時機;

2,上移的偏移是多大。

3,uitableview設定section間距 不明白的可以看看。

我根據自己實際操作的實現方法如下:

1,獲取正在編輯的uitextfield的指標定義乙個全域性的uitextfield的指標

uitextfield *temptextfiled;

在uitextfielddelegate**方法-(void)textfielddidbeginediting:(uitextfield *)textfield

修正temptextfiled的值為當前正在編輯的uitextfield的位址。

-(void)textfielddidbeginediting:(uitextfield *)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

} 然後實現鍵盤隱藏的處理:

在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不被鍵盤蓋住。

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

在ios開發中使用uitextfield時常須要考慮的問題就是鍵盤的處理。有時候,彈出的鍵盤會將uitextfield區域覆蓋,影響使用者輸入。這個時候就要將檢視上移。這個時候我們須要考慮兩點 1,改動檢視座標的時機 2,上移的偏移是多大。3,uitableview設定section間距 不明確的能...

ios開發之多點觸控

一般,tap pinch,pan swipe只是乙個簡單的單個觸控,它有一定的侷限性,所以多點觸控誕生了 為實現多點觸控,首先得做下列事情 對於使用多點觸控處理事件,你必須頻繁地儲存以後進行觸控比較的觸控狀態。例如,你要比較每個觸控的結束點位置和原始位置,你可以在touchesbegan withe...

ios開發之多點觸控

一般,tap pinch,pan swipe只是乙個簡單的單個觸控,它有一定的侷限性,所以多點觸控誕生了 為實現多點觸控,首先得做下列事情 對於使用多點觸控處理事件,你必須頻繁地儲存以後進行觸控比較的觸控狀態。例如,你要比較每個觸控的結束點位置和原始位置,你可以在touchesbegan withe...