Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 禁用键盘后,具有选定文本的UITextView对触摸没有响应_Ios_Swift_Keyboard_Uitextview - Fatal编程技术网

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()//关闭键盘
返回错误
}
}