解除键盘后,带有所选文本的UITextView不响应触摸
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解除键盘后,带有所选文本的UITextView不响应触摸相关的知识,希望对你有一定的参考价值。
我的视图控制器中有一个UITextView
和一些代码,当按下键盘上的Done按钮时,或者在文本视图外部点击时,它会解除键盘。因此,用户可以在文本视图中输入一些文本,关闭键盘,然后再次点击文本视图以重新召唤键盘。
当我选择一些文本然后关闭键盘时,所选文本上的突出显示将按预期消失。但由于某种原因,如果我点击之前突出显示的文本,键盘不会出现,并且光标不会插入到文本视图中以开始编辑,这是预期的行为。
什么可能阻止文本视图在文本突出显示后识别单击,然后键盘被解除?请注意,在这种情况下,文本视图将识别双击或长按手势,而不是单击。
答案
我弄清楚问题是什么。但我找不到任何其他问题来解决这个具体情况,所以我在这里回答我自己的问题,以防它可能会帮助遇到同样问题的其他人。
问题是,当您在选择文本时关闭键盘时,虽然所选文本上的突出显示似乎消失,但系统似乎认为文本仍处于选中状态,似乎正在等待其他一些输入。因此它无法识别通常的单击手势来开始编辑。
我所做的是在我的视图控制器中我有解除键盘的代码,我在解除键盘之前放了textView.selectedTextRange = nil
。这可确保文本视图中没有选定的文本。之后,可以安全地关闭键盘。
以下是我用来解除键盘的两种方法,添加了这一行。
// Dismiss keyboard when touching outside the text view.
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
super.touchesBegan(touches, withEvent: event)
textView.selectedTextRange = nil // ensures no text is selected, avoiding an issue which prevented single-tapping on the text after keyboard dismisses
view.endEditing(true) // dismisses keyboard
}
func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
// Dismiss keyboard when return key is pressed.
if text == "
" {
textView.selectedTextRange = nil // ensures no text is selected, avoiding an issue which prevented single-tapping on the text after keyboard dismisses
textView.resignFirstResponder() // dismisses keyboard
return false
}
}
以上是关于解除键盘后,带有所选文本的UITextView不响应触摸的主要内容,如果未能解决你的问题,请参考以下文章