一、鍵盤風格
UIKit框架支持8種風格鍵盤
typedef enum { UIKeyboardTypeDefault, // 默認鍵盤:支持所有字符 UIKeyboardTypeASCIICapable, // 支持ASCII的默認鍵盤 UIKeyboardTypeNumbersAndPunctuation, // 標准電話鍵盤,支持+*#等符號 UIKeyboardTypeURL, // URL鍵盤,有.com按鈕;只支持URL字符 UIKeyboardTypeNumberPad, //數字鍵盤 UIKeyboardTypePhonePad, // 電話鍵盤 UIKeyboardTypeNamePhonePad, // 電話鍵盤,也支持輸入人名字 UIKeyboardTypeEmailAddress, // 用於輸入電子郵件地址的鍵盤 } UIKeyboardType;
用法用例:
textView.keyboardtype =
二、鍵盤外觀
typedef enum { UIKeyboardAppearanceDefault, // 默認外觀:淺灰色 UIKeyboardAppearanceAlert, //深灰/石墨色 } UIKeyboardAppearance;
用法用例:
textView.keyboardAppearance=UIKeyboardAppearanceDefa
三、回車鍵
typedef enum { UIReturnKeyDefault, //默認:灰色按鈕,標有Return UIReturnKeyGo, //標有Go的藍色按鈕 UIReturnKeyGoogle, //標有Google的藍色按鈕,用於搜索 UIReturnKeyJoin, //標有Join的藍色按鈕 UIReturnKeyNext, //標有Next的藍色按鈕 UIReturnKeyRoute, //標有Route的藍色按鈕 UIReturnKeySearch, //標有Search的藍色按鈕 UIReturnKeySend, //標有Send的藍色按鈕 UIReturnKeyYahoo, //標有Yahoo!的藍色按鈕,用於搜索 UIReturnKeyDone, //標有Done的藍色按鈕 UIReturnKeyEmergencyCall, //緊急呼叫按鈕 } UIReturnKeyType;
用法用例:
textView.returnKeyType=UIReturnKeyGo;
四、自動大寫
typedef enum { UITextAutocapitalizationTypeNone, //不自動大寫 UITextAutocapitalizationTypeWords, //單詞首字母大寫 UITextAutocapitalizationTypeSentences, //句子首字母大寫 UITextAutocapitalizationTypeAllCharacters, //所有字母大寫 } UITextAutocapitalizationType;
textField.autocapitalizationType
五、自動更正
typedef enum { UITextAutocorrectionTypeDefault,//默認 UITextAutocorrectionTypeNo,//不自動更正 UITextAutocorrectionTypeYes,//自動更正 } UITextAutocorrectionType;
textField.autocorrectionType
六、安全文本輸入
textView.secureTextEntry=YES;
開啟安全輸入主要是用於密碼或一些私人數據的輸入,此時會禁用自動更正和自此緩存。
以上內容都可以在 inspector中設置:
<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+CtTaIGlPUyCzzNDy1tC1sc/r0qrU2s7Esb6/8tbQyuTI68r9vt2jrMfhtKXOxLG+v/K74bTyv6q8/MXMoaO21NPaIGlQYWQgs8zQ8qOsxuS8/MXM09DSu7j2sLTFpb/J0tTTw8C0udix1bz8xcyjrLWryscgaVBob25lILPM0PLW0LXEvPzFzMi0w7vT0NXi0fm1xLC0xaWjrLK7uf3O0sPHv8nS1LLJyKHSu9Cpt723qLnYsdXL/KGjwP3I56OsztLDx7/J0tTKtc/WsLTPwiBSZXJ1biCjqNPQyrHSssrHIERvbmWholJlc2VhcmNoILXIo6m8/LnYsdW8/MXMo6y78tXfo6y4/MjL0NS7r7XEo6zH4bSlsbO+sLnYsdW8/MXMoaM8L3A+CjxwPgo8c3Ryb25nPjGhosrXz8i9stK7z8KwtM/CUmV0dXJuvPy52LHVvPzFzKGjPC9zdHJvbmc+PC9wPgo8cD4KtbGwtM/CvPzFzLXEIFJldHVybiC8/KOsu+Gy+sn60ru49iBEaWQgRW5kIE9uIEV4aXQgysK8/qOstMvKsaOsztLDx7jmy9/OxLG+v/LSqrfFxvq/2Lz+o6zT2srHvPzFzL7Nz/vKp8HLoaM8L3A+CjxwPgq82cnoo6zO0sPH0tG+rbS0vajBy9K7uPYgU2luZ2xlIFZpZXcgQXBwbGljYXRpb24go6yyorTyv6ogVmlld0NvbnRyb2xsZXIueGliIM7EvP6jrNTaIFZpZXcgyc/Nz8nPyKXBy8j9uPYgVGV4dCBGaWVsZCCjrMi7uvOjrM7Sw8ew0dXiyP249s7Esb6/8tOzyeS1vSBWaWV3Q29udHJvbGxlci5oINbQo6zD+7PG0sC0zsrHIGZpcnN0RmllbGShonNlY29uZEZpZWxkINLUvLAgdGhpcmRGaWVsZCCho8jnz8LNvKO6PC9wPgo8aW1nIHNyYz0="/uploadfile/Collfiles/20140304/20140304081141200.jpg" alt="\">
(1)在 ViewController.h 中聲明一個方法:
- (IBAction)textFiledReturnEditing:(id)sender;(2)在 ViewController.m 中實現這個方法:
-(IBAction)textFiledReturnEditing:(id)sender { [sender resignFirstResponder]; }
讓這三個文本框都映射到 textFiledReturnEditing 方法,不過此時的事件應當是 Did End On Exit ,具體操作是:
打開 Assistant Editor ,左邊打開 ViewController.xib ,右邊打開 ViewController.h ,在 Xcode 最右邊打開 Connector Inspector ,然後在 View 中選擇第一個文本框,在 Connector Inspector 中找到 Did End On Exit ,從它右邊的圓圈中拉出映射線,映射到 ViewController.h 的 textFiledReturnEditing 方法,如下圖:
給其他兩個文本框進行同樣的操作。現在,已經實現了輕觸 Return 鍵關閉鍵盤。
2、下面介紹輕觸背景關閉鍵盤。
(1)在 ViewController.h 文件中添加方法聲明代碼:
- (IBAction)backgroundTap:(id)sender;(2)在ViewController.m中實現這個方法:
- (IBAction)backgroundTap:(id)sender { [firstField resignFirstResponder]; [secondField resignFirstResponder]; [thirdField resignFirstResponder]; }
(3)讓 View 映射到這個方法,不過事先,我們先要改變 View 的類型。
打開xib,選中 View ,打開 Identity Inspector ,在 class 中選擇 UIControl :
4)打開Assistant Editor ,左邊打開 ViewController.xib ,右邊打開 ViewController.h ,在Xcode最右邊打開 Connector Inspector ,在 ViewController.xib 中選擇 Control ,在 Connector Inspector 中找到 Touch Down ,從它右邊的圓圈中拉出映射線,映射到 ViewController.h 的 backgroundTap 方法,如下圖:
運行結果:
打開鍵盤之後,在背景區域點擊一下,鍵盤就會向下收起來。
三.解決虛擬鍵盤擋住UITextField的方法
因為屏幕太小的緣故,一個鍵盤跳出來總是把輸入框擋住,所以需要移動屏幕來匹配鍵盤
#pragma mark - #pragma mark 解決虛擬鍵盤擋住UITextField的方法 - (void)keyboardWillShow:(NSNotification *)noti { //鍵盤輸入的界面調整 //鍵盤的高度 float height = 216.0; CGRect frame = self.view.frame; frame.size = CGSizeMake(frame.size.width, frame.size.height - height); [UIView beginAnimations:@"Curl"context:nil];//動畫開始 [UIView setAnimationDuration:0.30]; [UIView setAnimationDelegate:self]; [self.view setFrame:frame]; [UIView commitAnimations]; } -(BOOL)textFieldShouldReturn:(UITextField *)textField { // When the user presses return, take focus away from the text field so that the keyboard is dismissed. NSTimeInterval animationDuration = 0.30f; [UIView beginAnimations:@"ResizeForKeyboard" context:nil]; [UIView setAnimationDuration:animationDuration]; CGRect rect = CGRectMake(0.0f, 0.0f, self.view.frame.size.width, self.view.frame.size.height); //CGRect rect = CGRectMake(0.0f, 20.0f, self.view.frame.size.width, self.view.frame.size.height); self.view.frame = rect; [UIView commitAnimations]; [textField resignFirstResponder]; return YES; } - (void)textFieldDidBeginEditing:(UITextField *)textField { CGRect frame = textField.frame; int offset = frame.origin.y + 32 - (self.view.frame.size.height - 216.0);//鍵盤高度216 NSTimeInterval animationDuration = 0.30f; [UIView beginAnimations:@"ResizeForKeyBoard" context:nil]; [UIView setAnimationDuration:animationDuration]; float width = self.view.frame.size.width; float height = self.view.frame.size.height; if(offset > 0) { CGRect rect = CGRectMake(0.0f, -offset,width,height); self.view.frame = rect; } [UIView commitAnimations]; } #pragma mark -
只要在代碼中加入這三個文件,然後將自身delegate
控制器添加UITextFieldDelegate
@interface ViewController : UIViewController在viewDidLoad中添加:
- (void)viewDidLoad { [super viewDidLoad]; self.firstTextField.delegate=self; self.secondTextField.delegate=self; self.thirdTextField.delegate=self; }
- (IBAction)backgroundTap:(id)sender { [self.firstTextField resignFirstResponder]; [self.secondTextField resignFirstResponder]; [self.thirdTextField resignFirstResponder]; NSTimeInterval animationDuration = 0.30f; [UIView beginAnimations:@"ResizeForKeyboard" context:nil]; [UIView setAnimationDuration:animationDuration]; CGRect rect = CGRectMake(0.0f, 0.0f, self.view.frame.size.width, self.view.frame.size.height); self.view.frame = rect; }
例子下載鏈接http://download.csdn.net/detail/superlele123/6986691