iOS 隱藏鍵盤,IME,防止遮擋輸入框

來源:互聯網
上載者:User

在百度裡輸入“ios 隱藏鍵盤”,很快搜出很多文章。比如:“點擊return隱藏”,“點擊輸入框其他地方隱藏”,等等還有的大篇大論的。


其實隱藏IME也簡單,我們應該抓住其本質:即調用resignFirstResponder函數實現隱藏(下面想些介紹)resignFirstResponder

當然,你可以在下面任何一個地方調用,即可隱藏IME鍵盤。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

    NSLog(@"%@",@"pointer began");

}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

{

    NSLog(@"%@",@"pointer move");

    [textFieldresignFirstResponder];//滑動時隱藏IME

}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

{

     NSLog(@"%@",@"pointer end");

}

還有一種方法點擊“return”後自動隱藏。注意:這個方法需要繼承協議UITextFieldDelegate

只能是UIViewController繼承自UITextFieldDelegate才行。UIView類繼承UITextFieldDelegate就不行。

還要繼續研究,為什麼UIView就不行。

(哎太大意了:是因為我的UIView沒有實現UITextFieldDelegate協議,加上contentField.delegate = self;就好了)

resignFirstResponder交出IME的第一響應者的身份,達到隱藏的目的。待續。。。。。防止遮擋輸入框

以下文章摘自http://xscconan.blog.163.com/blog/static/149593132012111310351998/

主要思想:就是在鍵盤彈出時候,還有隱藏的時候,相應的view也做出相應上移或者下移的效果:

前提:view實現輸入框的協議,contentField.delegate
= self;


//開始編輯輸入框的時候,軟鍵盤出現,執行此事件

-(void)textFieldDidBeginEditing:(UITextField *)textField

{

    int offset =216;//frame.origin.y + 43 - (self.frame.size.height - 216.0);//鍵盤高度216

    //將視圖的Y座標向上移動offset個單位,以使下面騰出地方用於軟鍵盤的顯示

   if(offset >
0)

    {

       NSTimeInterval animationDuration =
0.30f;

        [UIViewbeginAnimations:@"ResizeForKeyboard"context:nil];

        [UIViewsetAnimationDuration:animationDuration];

       self.frame =CGRectMake(0.0f, -offset,self.frame.size.width,self.frame.size.height);

        [UIViewcommitAnimations];

    }

}

//當輸入框隱藏時,view也做出相應下移操作

-(void)textFieldDidEndEditing:(UITextField *)textField

{

   NSTimeInterval animationDuration =
0.30f;

    [UIViewbeginAnimations:@"ResizeForKeyboard"context:nil];

    [UIViewsetAnimationDuration:animationDuration];

    //20是topbar的高度,其實view.frame的size是[0,460].

    self.frame =CGRectMake(0,20,
self.frame.size.width,self.frame.size.height);

    [UIViewcommitAnimations];

}

完美實現。。


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.