You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在UITextView中获取选中文本?自定义复制按钮报错求助

解决UITextView无法获取选中文本的问题

嘿,这个问题我之前也踩过坑!你遇到的错误是因为Swift里UITextView获取选中范围文本的方法不是textInRange:——这个是Objective-C的写法,Swift里对应的正确方法是text(in:)

另外还要注意,selectedTextRange是可选值(用户可能没选中任何文本),直接用的话容易触发崩溃,最好先做可选绑定处理。

修正后的代码应该是这样的:

@IBAction func copyButton(_ sender: Any) {
    // 先判断是否有选中的文本范围
    guard let selectedRange = textView.selectedTextRange else {
        // 没有选中的话可以提示用户,或者直接返回
        return
    }
    // 使用正确的text(in:)方法获取选中文本
    let selectedText = textView.text(in: selectedRange)
    // 将文本复制到剪贴板
    UIPasteboard.general.string = selectedText
}

补充几个小提示:

  • 如果需要处理用户没选文本的情况,可以在这里加个提示框(比如用UIAlertController)告诉用户先选中要复制的内容
  • 如果你还需要兼容Objective-C的写法,才会用到textInRange:,但Swift里完全推荐用text(in:)

内容的提问来源于stack exchange,提问作者Josh

火山引擎 最新活动