iOS對鍵盤的處理

來源:互聯網
上載者:User

標籤:

方法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對鍵盤的處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.