標籤:
方法1. 使用<UITextFeildDelegate>,使用的UITextField樣本 設定其Delegate為self,點擊return按鈕隱藏鍵盤。實現函數如下: - (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder]; return YES;
} 方法2. 點擊介面的其它空白地方隱藏
由於UIViewController是繼承自UIResponder的,所以可以覆寫- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;這個開始觸摸的方法來取消第一響應者,代碼如下:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[_tfPassword resignFirstResponder];
[_tfUsername resignFirstResponder];
}
以上兩種方法是初學iOS的時候使用的。 3. 最好還是使用NotificationCenter的方法比較好,能擷取鍵盤高度等詳細資料
#import "ViewController.h"@interface ViewController ()@property (weak, nonatomic) IBOutlet UITextField *tfTest;@property (weak, nonatomic) IBOutlet UITextField *tfTest2;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; }- (void)viewDidappear:(BOOL)animated{ [super viewDidDisappear:animated]; //移除鍵盤監聽訊息 [[NSNotificationCenter defaultCenter]removeObserver:self name:UIKeyboardWillShowNotificationobject:nil]; [[NSNotificationCenter defaultCenter]removeObserver:self name:UIKeyboardWillHideNotificationobject:nil]; //註冊鍵盤監聽訊息 [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyShow:)name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyHide:)name:UIKeyboardWillHideNotification object:nil];} //彈出鍵盤訊息響應- (void)keyShow:(NSNotification *)no{ NSLog(@"keyShow"); NSDictionary *dic = [no valueForKey:@"userInfo"]; CGFloat heightKeyboard = [[dicvalueForKey:@"UIKeyboardBoundsUserInfoKey"]CGRectValue].size.height; UIView *firstResponderView = [self getFirstResponderView]; CGFloat distanceToBottom = self.view.frame.size.height -CGRectGetMaxY(firstResponderView.frame); //動畫 if(distanceToBottom < heightKeyboard){ CGRect frame = self.view.frame; frame.origin.y = -(heightKeyboard - distanceToBottom); [UIView animateWithDuration:0.3f animations:^{ [self.view setFrame:frame]; } completion:^(BOOL finished) { }]; }}//關閉鍵盤訊息響應- (void)keyHide:(NSNotification *)no{ NSLog(@"keyHide"); CGRect frame = self.view.frame; frame.origin.y = 0; //動畫 [UIView animateWithDuration:0.3f animations:^{ [self.view setFrame:frame]; } completion:^(BOOL finished) { }];}//點擊背景地區自動隱藏鍵盤- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ UIView *firstResponderView = [self getFirstResponderView]; [firstResponderView resignFirstResponder];}//擷取當前焦點所在的控制項- (UIView *)getFirstResponderView{ UIWindow *keyWindow = [[UIApplication sharedApplication]keyWindow]; UIView *firstResponder = [keyWindow performSelector:@selector(firstResponder)]; return firstResponder;}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning];}@end
iOS對鍵盤的處理