在百度裡輸入“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];
}
完美實現。。