你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS開發- 隱藏鍵盤總結

iOS開發- 隱藏鍵盤總結

編輯:IOS開發綜合

一、隱藏自身軟鍵盤


當對於有多個UITextField控件都想通過點擊“Return”來隱藏自身軟鍵盤的情況,這時的最好辦法是使用Did End on Exit事件。在點擊軟鍵盤右下角的“Return”按鈕後,會觸發該事件。
該事件有一個sender參數表示當前文本框,這樣便可以編寫一個通用的事件處理方法(.m文件)——
- (IBAction)TextField_DidEndOnExit:(id)sender { 
// 隱藏鍵盤. 
[sender resignFirstResponder]; 
} 


然後在.h文件中填寫該方法的聲明——

- (IBAction)TextField_DidEndOnExit:(id)sender; 

回到storyboard,並按command+option+enter打開輔助窗口,使輔助窗口顯示.h文件。 選中一個UITextField控件,點擊鼠標右鍵彈出面板,鼠標左鍵按住Did End on Exit事件旁邊的圓圈,然後拖曳到右側.h文件的TextField_DidEndOnExit方法上,便會建立好事件連接。 隨後按照同樣的做法,將其他UITextField控件的Did End on Exit事件也連接到TextField_DidEndOnExit方法。

運行一下,可發現每個文本框的軟鍵盤都可以通過點擊“Return”來隱藏了。

二、點擊Return自動轉到下個文本框


當頁面中有很多個文本框時,如果每次都需要點文本框激活軟鍵盤、輸入後點擊Return隱藏軟鍵盤、再點擊下一個文本框……這樣操作起來太繁瑣了。 於是我們希望能夠實現點擊Return時能夠自動轉到下一個文本框。尤其是對於最後一個文本框,希望能夠在點擊Return時執行下一步操作。

例如對於登錄頁面。它上面有 賬號文本框(nameTextField)、密碼文本框(passTextField)、登錄按鈕(loginButton)。
我們希望——點擊賬號文本框軟鍵盤的Return時跳轉到密碼文本框,點擊密碼文本框軟鍵盤的Return時執行登錄。
因為這兩個文本框的功能不同,不能像上一節那樣寫一個TextField_DidEndOnExit做統一處理,而應該分別建立各自的事件處理方法。

回到storyboard,右擊賬號文本框(nameTextField)彈出面板,按住Did End on Exit事件旁邊的圓圈,然後拖曳到右側.h文件的空白地方,此時會彈出一個對話框給方法命名。輸入名稱 (nameTextField_DidEndOnExit)後回車確定,便自動生成了該事件方法。
隨後按照同樣的做法,為密碼文本框(passTextField)的Did End on Exit事件連接方法(passTextField_DidEndOnExit)。
來到.m文件,填寫具體代碼——

- (IBAction)nameTextField_DidEndOnExit:(id)sender { 
// 將焦點移至下一個文本框. 
[self.passTextField becomeFirstResponder]; 
} 
- (IBAction)passTextField_DidEndOnExit:(id)sender { 
// 隱藏鍵盤. 
[sender resignFirstResponder]; 
// 觸發登陸按鈕的點擊事件. 
[self.loginButton sendActionsForControlEvents:UIControlEventTouchUpInside]; 
} 


對於賬號文本框轉密碼文本框,不需要隱藏軟鍵盤,只需要調用becomeFirstResponder激活新的文本框就行了。
對於密碼文本框Return後執行登錄。因為不再需要顯示軟鍵盤,所以還是得調用resignFirstResponder隱藏軟鍵盤,然後觸發登錄按鈕(loginButton)的UIControlEventTouchUpInside事件進行登錄。

運行一下,可發現已經達到我們希望的效果了。點擊賬號文本框軟鍵盤的Return時跳轉到密碼文本框,點擊密碼文本框軟鍵盤的Return時執行登錄。
怎麼都是“Return”,轉換文本框與執行登錄明明是不同的功能?
於是將賬號文本框的Return Key屬性設為“Next”,將密碼文本框的Return Key屬性設為“Done”,使界面與功能一致。

三、輕觸背景隱藏軟鍵盤


只能通過Return關閉軟鍵盤太不靈活了,應該提供輕觸背景隱藏軟鍵盤的功能。

在storyboard,點擊背景View,將它的Custom Class設置為UIControl,這樣才會出現Touch Down事件。
右擊背景View彈出面板,按住Touch Down事件旁邊的圓圈,然後拖曳到右側.h文件的空白地方建立該事件的處理方法。
來到.m文件,填寫具體代碼——

- (IBAction)View_TouchDown:(id)sender { 
// 發送resignFirstResponder. 
[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil]; 
} 


四、自定義鍵盤

源碼可以到我的github中下載:https://github.com/colin1994/myKeyboard.git

可以通過自定義鍵盤, 在鍵盤上加入你需要的功能, 即可。

效果如下:

\


代碼如下:<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD48cD48L3A+PHByZSBjbGFzcz0="brush:java;">- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. if (self.keyboardToolbar == nil) { self.keyboardToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 38.0f)]; self.keyboardToolbar.barStyle = UIBarStyleBlackTranslucent; UIBarButtonItem *previousBarItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"前進", @"") style:UIBarButtonItemStyleBordered target:self action:@selector(previousField:)]; UIBarButtonItem *nextBarItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"後退", @"") style:UIBarButtonItemStyleBordered target:self action:@selector(nextField:)]; UIBarButtonItem *spaceBarItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; UIBarButtonItem *doneBarItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"隱藏", @"") style:UIBarButtonItemStyleDone target:self action:@selector(resignKeyboard:)]; [self.keyboardToolbar setItems:[NSArray arrayWithObjects:previousBarItem, nextBarItem, spaceBarItem, doneBarItem, nil]]; } self.myTextView.inputAccessoryView = self.keyboardToolbar; } #pragma mark - your code - (void)resignKeyboard:(id)sender { [self.myTextView resignFirstResponder]; } - (void)previousField:(id)sender { } - (void)nextField:(id)sender { }



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