gpt4 book ai didi

ios - textViewDidChangeSelection 方法认为 textView.text 为空

转载 作者:可可西里 更新时间:2023-11-01 01:23:35 27 4
gpt4 key购买 nike

由于各种原因,每当更改选择时我都需要访问 TextView 中的文本,因此我实现了委托(delegate)方法 textViewDidChangeSelection() 来执行此操作。但出于某种原因,当我尝试从该方法中访问 textView.text 时,有时它返回为空,即使它不是。以这段代码为例。

func textViewDidChangeSelection(_ textView: UITextView) {
print("Called textViewDidChangeSelection")

if textView.text.isEmpty {
print("textview is empty")
} else {
print("textview is not empty")
}
}

在我的代码中使用这个示例,我单击一个非空的 textView,有时它会返回“textview is empty”。它似乎最常在重新运行模拟器并单击任何 textView 后立即发生,但我也看到它在第一次单击 textView 时发生(在单击其他 textView 之后)或当我从其他 View 返回到包含 textView 的 UIView 时。

有人知道为什么会这样吗?

最佳答案

textViewDidChangeSelection(_ textView: UITextView)

在文本选择更改时调用,不一定仅在选择另一个 textView 时调用。事实上,在过去,textView 的 selectedRange 属性用于返回零(表示插入),但现在(根据 Apple)选择范围的长度可能不为零。当您点击远离 textView 时,您的委托(delegate)方法可能会触发初始 textView(您要离开的那个),如果它是空的,它会给您您看到的结果。

尝试提供您的 textView 标签并使用:

func textViewShouldBeginEditing(_ textView: UITextView) -> Bool {
print("Selected \(textView.tag)")

return true
}

看看它是否解决了您的问题。当然,标签只是一种快速而肮脏的检查,您可能会在您的应用中使用更灵活的 textView 标识。

关于ios - textViewDidChangeSelection 方法认为 textView.text 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42465327/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com