iOS 隐藏键盘, 保持光标(编辑态)方法

需求背景
有些情况下,我们可能需要隐藏键盘,但是保持输入框的编辑状态,光标不消失.
比如:在界面上加上语音输入功能.
方法
通常取消键盘的做法:

//1.视图取消编辑态
[self.view endEditing:YES];
//2.输入框取消第一响应
if ([self.textView canResignFirstResponder]) {
    [self.textView resignFirstResponder];
}

以上方法, 虽然成功的隐藏键盘, 但是其原理都是通过取消输入框的第一响应实现的.而取消了输入框的响应状态, 自然光标就消失, 如果需要保持光标, 就需要用到:

//替换输入视图(隐藏系统键盘或可使用自定义)
_textView.inputView = [[UIView alloc] initWithFrame:CGRectZero];
_textView.inputAccessoryView = [[UIView alloc] initWithFrame:CGRectZero];
[_textView reloadInputViews];

//输入视图为系统默认键盘
_textView.inputView = nil;
_textView.inputAccessoryView =  nil;

使用以上方法, 在iPad + iOS 9 以上系统中, 会在键盘上方出现toolbar无法取消的情况:


这时候需要用到:

// iPad + iOS > 9.0 取消键盘上的toolbar
if ([iOSVersion floatValue] >= 9.0 ) {

    UITextInputAssistantItem* item = [_textView inputAssistantItem];
    item.leadingBarButtonGroups = @[];
    item.trailingBarButtonGroups = @[];
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  •   JavaScript 与 HTML 之间的交互是通过事件实现的。   事件,就是文档或浏览器窗口中发生的一些特...
    霜天晓阅读 3,538评论 1 11
  • 不知不觉,岁寒输入法的更新历史已经可以列出这么一长串来了。从中可以看出,岁寒的发展过程也是一个不断试错的过程,其中...
    临岁之寒阅读 34,151评论 1 6
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,510评论 0 17
  • (本文来自《Custom Keyboard》)自定义键盘为那些希望体验更新颖的输入法或者需要用到iOS不支持的语言...
    RickMao阅读 8,744评论 3 66
  • Windows 常用消息大全 表A-1 Windows消息分布 消息范围说 明 0 ~ WM_USER – 1系统...
    北风知我意阅读 2,086评论 0 0