Ios 禁用键盘后,具有选定文本的UITextView对触摸没有响应
我的视图控制器中有一个Ios 禁用键盘后,具有选定文本的UITextView对触摸没有响应,ios,swift,keyboard,uitextview,Ios,Swift,Keyboard,Uitextview,我的视图控制器中有一个UITextView和一些代码,当按下键盘上的“完成”按钮或在文本视图外点击时,这些代码会关闭键盘。因此,用户可以在文本视图中输入一些文本,关闭键盘,然后再次点击文本视图以重新调用键盘 当我选择一些文本,然后关闭键盘时,所选文本上的突出显示将按预期消失。但出于某种原因,如果我点击先前高亮显示的文本,键盘不会出现,光标也不会插入文本视图以开始编辑,这是预期的行为 在突出显示文本然后关闭键盘后,什么会阻止文本视图识别单个点击?请注意,在这种情况下,文本视图将识别双击或长按手势,
UITextView
和一些代码,当按下键盘上的“完成”按钮或在文本视图外点击时,这些代码会关闭键盘。因此,用户可以在文本视图中输入一些文本,关闭键盘,然后再次点击文本视图以重新调用键盘
当我选择一些文本,然后关闭键盘时,所选文本上的突出显示将按预期消失。但出于某种原因,如果我点击先前高亮显示的文本,键盘不会出现,光标也不会插入文本视图以开始编辑,这是预期的行为
在突出显示文本然后关闭键盘后,什么会阻止文本视图识别单个点击?请注意,在这种情况下,文本视图将识别双击或长按手势,而不是一次点击。我发现了问题所在。但我找不到任何其他问题来解决这个具体情况,所以我在这里回答我自己的问题,以防它可能会帮助其他遇到同样问题的人 问题是,当您在选择文本的同时关闭键盘时,尽管所选文本上的突出显示似乎消失了,但系统似乎认为该文本仍处于选中状态,似乎在等待其他输入。因此,它无法识别通常的单点击手势来开始编辑 我所做的是在我的视图控制器中,我有关闭键盘的代码,在关闭键盘之前,我将
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 == "\n" {
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
}
}
//触摸文本视图外部时关闭键盘。
覆盖功能触摸开始(触摸:设置,withEvent事件:UIEvent?){
super.touchsbegind(touchs,withEvent:event)
textView.selectedTextRange=nil//确保未选择任何文本,避免了键盘关闭后无法单次点击文本的问题
view.endEditing(true)//关闭键盘
}
func textView(textView:UITextView,shouldChangeTextInRange范围:NSRange,replacementText:String)->Bool{
//按下返回键时关闭键盘。
如果文本==“\n”{
textView.selectedTextRange=nil//确保未选择任何文本,避免了键盘关闭后无法单次点击文本的问题
textView.resignFirstResponder()//关闭键盘
返回错误
}
}
我发现了问题所在。但我找不到任何其他问题来解决这个具体情况,所以我在这里回答我自己的问题,以防它可能会帮助其他遇到同样问题的人
问题是,当您在选择文本的同时关闭键盘时,尽管所选文本上的突出显示似乎消失了,但系统似乎认为该文本仍处于选中状态,似乎在等待其他输入。因此,它无法识别通常的单点击手势来开始编辑
我所做的是在我的视图控制器中,我有关闭键盘的代码,在关闭键盘之前,我将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 == "\n" {
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
}
}
//触摸文本视图外部时关闭键盘。
覆盖功能触摸开始(触摸:设置,withEvent事件:UIEvent?){
super.touchsbegind(touchs,withEvent:event)
textView.selectedTextRange=nil//确保未选择任何文本,避免了键盘关闭后无法单次点击文本的问题
view.endEditing(true)//关闭键盘
}
func textView(textView:UITextView,shouldChangeTextInRange范围:NSRange,replacementText:String)->Bool{
//按下返回键时关闭键盘。
如果文本==“\n”{
textView.selectedTextRange=nil//确保未选择任何文本,避免了键盘关闭后无法单次点击文本的问题
textView.resignFirstResponder()//关闭键盘
返回错误
}
}