• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 从 textView 中的字符索引获取单词(iOS)

[复制链接]
菜鸟教程小白 发表于 2022-12-11 18:43:37 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

在点击 UITextVIew 时,我试图获取点击发生的单词(使用放置在 UITextView 中的 UITapGestureRecognizer)。我能够抓取所选字符的索引,但我没有成功抓取完整的单词,它似乎只在我点击第一个字母时才有效。

func textTapped(_ tapGestureRecognizer: UITapGestureRecognizer){
    if let textView = textTapGestureRecognizer?.view as? UITextView {
        let layoutManager = textView.layoutManager
        var location: CGPoint = textTapGestureRecognizer!.location(in: textView)
        location.x -= textView.textContainerInset.left
        location.y -= textView.textContainerInset.top

        let characterIndex = layoutManager.characterIndex(for: location, in: textView.textContainer, fractionOfDistanceBetweenInsertionPoints: nil)
        if characterIndex < textView.textStorage.length {

            // print the character index successfully
            print("character index: \(characterIndex)")

            // print the character at the index successfully
            let myRange = NSRange(location: characterIndex, length: 1)
            let substring = (textView.attributedText.string as NSString).substring(with: myRange)
            print("character at index: \(substring)")

            let tapPosition: UITextPosition? = textView.closestPosition(to: location)
            //fetch the word at this position (or nil, if not available)
            if let textRange = textView.tokenizer.rangeEnclosingPosition(tapPosition!, with: .word, inDirection: 1) {
                if let tappedWord = textView.text(in: textRange) {
                    print("selected word :\(tappedWord)")
                    //This only prints when I seem to tap the first letter of word. 
                }
            }
        }
    }
}

我总是能够打印出字符索引和被点击的字符,但是,捕获单词是个问题。如何每次都从带有字符索引的 textView 中获取整个单词?



Best Answer-推荐答案


问题显然源于我在获取位置后设置的 .x 和 .y 值。我所要做的就是删除这些行:

location.x -= textView.textContainerInset.left
location.y -= textView.textContainerInset.top

关于ios - 从 textView 中的字符索引获取单词(iOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41860197/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap