IOS 关闭键盘的几种方式

摘要:
1.单击编辑区域外的位置。这是一种非常直接的方式。当不再需要虚拟键盘时,只需单击虚拟键盘和编辑区域外的位置即可关闭键盘。以下代码是在UIView中绑定触摸以关闭键盘的方法。1-触摸结束:触摸开关事件:事件{2if(!

1. 点击编辑区域以外的地方 (UIView)

这是一种很直接的方式, 当不再需要虚拟键盘的时候, 只要点击虚拟键盘和编辑区域以外的地方, 就可以将键盘收起, 下面的code是在UIView绑定触摸关闭键盘的方法.

1 - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {  
2     if (![myTextView isExclusiveTouch]) {  
3         [myTextView resignFirstResponder];  
4     }  
5 }

使用这种方式请务必记得, 操作对象的Custom Class一定是要UIView才可以.

 

2. 点击编辑区域以外的地方 (UIControl)

如果你的touchesEnded: withEvent 方法中已经有了很多的代码, 则使用方法1 将会使得代码变得结构混乱, 所以说可以考虑使用UIControl 的 TouchUpInside来收起键盘, 将以下的代码与UIControl 的TouchUpInside 链接起来即可

 

1 - (IBAction)dismissKeyboard: (id) sender
2 {
3     [myTextView resignFirstResponder];
4 }

 

使用这种方式请务必记得, 操作对象的Custom Class一定是要UIControl才可以. 如果想在UIView上使用这种方法, 则可以直接在IB中将 Custom Class修改为UIControl即可.

 

3. 使用自定义收起键盘的按钮

如果当前屏幕没有手指可以点击的地方供点击来收起键盘, 自己可以制作一个按钮来收起目前的虚拟键盘, 由于按钮需要依附于虚拟键盘的状态来决定自己的现实状态, 因此必须借用 NSNotificationCenter 来帮助我们判断键盘目前的状态.

首先在viewDidLoad: 中, 向NSNotificationCenter 进行注册, 告诉 NSNotificationCenter 我们的doneButtonShow: 方法

1 - (void)viewDidLoad 
2 {  
3    [super viewDidLoad];
4    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector (doneButtonShow:) name: UIKeyboardDidShowNotification object:nil]; 
5 }

现在, 当虚拟键盘出现的时候, 就会自动调用doneButtonShow:方法, 接下来只需要在doneButtonShow:方法中定义按钮出现的方法即可

-(void) doneButtonShow: (NSNotification *)notification {
    self.doneButton = [UIButton buttonWithType: UIButtonTypeRoundedRect];
    self.doneButton.frame = CGRectMake(0, 211, 70, 35);
    [self.doneButton setTitle:@"完成编辑" forState: UIControlStateNormal];
    [self.doneButton addTarget: self action:@selector(hideKeyboard) forControlEvents: UIControlEventTouchUpInside];
    
    [self.view addSubview:self.doneButton];
}

最后是真正起作用的隐藏键盘的方法, 顺便将添加的隐藏键盘按钮也隐藏.

1 -(void) hideKeyboard {
2     [self.doneButton removeFromSuperview];
3     [myTextView resignFirstResponder];5 }

 

严重参考: http://www.gowhich.com/blog/307#2

 

免责声明:文章转载自《IOS 关闭键盘的几种方式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Qt 开发的界面程序封装成DLL,在VC中成功调用Cocos Creator 对象池NodePool下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ios开发学习文字视图(Text)效果源码分享系列教程

Swipe Shift Caret介绍: 在UITextView或者UITextField中插入文字的时候,用手指滑动屏幕左右两边任意位置,都可以左右调整文字输入光标(caret)。在选择文字范围时,用手指左右滑动屏幕,都可以调整选择的左右范围,而不需要用手指拖动范围选择的两根竖线(caret)。http://ios.itmdc.com/thread-36...

IQKeyboardManager第三方库的使用

IQKeyboardManager是iOS中解决键盘弹起遮挡UITextField/UITextView的一种很实用的工具。无需输入任何代码,不需要额外的设置。使用IQKeyboardManager的你只需要将源文件添加到项目。 这里附上下载链接:https://github.com/hackiftekhar/IQKeyboardManager IQKe...

iOS 键盘 隐藏系统的 toolBar

有些情况下,我们可能需要隐藏键盘,但是保持输入框的编辑状态,光标不消失. 比如:在界面上加上语音输入功能. //1.视图取消编辑态 [self.view endEditing:YES]; //2.输入框取消第一响应 if ([self.textView canResignFirstResponder]) {...