温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ios键盘收起问题的示例分析

发布时间:2021-08-04 14:28:52 来源:亿速云 阅读:147 作者:小新 栏目:移动开发

小编给大家分享一下ios键盘收起问题的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

在开发过程中,我们经常会用到UITextField、UITextView等文本框,然后这些文本框在点击之后会自动成为第一响应者(FirstResponder),并自动弹出软键盘。然而,没有自动定义好的软键盘的回收。今天,我在开发过程中就遇到了这个问题,首先,软键盘收起会发生在两种情况下,一是当前区域为非第一响应者,二是当前区域的输入结束。具体解决方案有两种:

1、在当前页面设置点击事件,当点击事件发生时,注销当前视图的第一响应者或者设置当前摄入结束。当点击事件发生在非选中区域时,则键盘会自动回收:

//在viewDidLoad中 添加点击手势,为了关闭键盘的操作
UITapGestureRecognizer *tap1 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTapped:)];
tap1.cancelsTouchesInView = NO;
[self.view addGestureRecognizer:tap1];
//点击空白处的手势要实现的方法,设置当前输入结束
-(void)viewTapped:(UITapGestureRecognizer*)tap1
{
  [self.view endEditing:YES]; 
}

这种方法对于视图上的任何UITextField、UITextView等文本框都有效,不需要对每一个UITextField、UITextView等文本框进行进行设置。

2、利用键盘上的 回车键 来进行设置当前UITextField、UITextView等文本框不是第一响应者,这种方法对UITextField、UITextView的应用不一样,需要区别进行。

对于UITextField,相应的UITextFieldDelegate有相关的处理

//设置回车键的类型和代理
self.themeTextField.returnKeyType = UIReturnKeyDone;
self.themeTextField.delegate = self ;
#pragma mark - textField delegate
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
  [textField resignFirstResponder];
  //[self.view endEditing:YES];
  return YES;
}

对于UITextView,相应的UITextViewDelegate并没有相应的处理回车键的方法。但是,我们可以根据UITextViewDelegate提供的方法对键盘输入的值进行判断,如果为回车键(\n)则设置当前UITextView不是第一响应者,否则不操作。

//设置回车键的类型和代理,当前类是继承自UITextView的一个类 
self.delegate = self ; 
self.returnKeyType = UIReturnKeyDone ;
//UITextViewDelegate代理,当键盘输入变化时调用,可以通过该方法判断输入的内容
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range
 replacementText:(NSString *)text
{
  //判断是否是回车键
  if ([text isEqualToString:@"\n"]) {
    [textView resignFirstResponder];
    return NO;
  }
  return YES ;
}

以上是“ios键盘收起问题的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

ios
AI