iOS小问题之 tableviewCell嵌套TextView,在有url点击事件冲突

在tableviewCell嵌套TextView,一般在评论功能里用的很多,例如微博。

WechatIMG78.jpeg

这里有个问题,里面一些蓝色的地方需要响应点击,而点击整个cell也需要响应点击事件,其中被TextView捕获到之后,cell的点击事件就不被响应了。
这里我们需要点击蓝色部分响应TextView点击事件,点其他部分,响应cell点击事件

这里我们可以重写一下TextView的点击事件

override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
        
        var location = point
        location.x -= self.textContainerInset.left
        location.y -= self.textContainerInset.top
        
        // find the character that's been tapped
        let characterIndex = self.layoutManager.characterIndex(for: location, in: self.textContainer, fractionOfDistanceBetweenInsertionPoints: nil)
        if characterIndex < self.textStorage.length {
            // if the character is a link, handle the tap as UITextView normally would
            if (self.textStorage.attribute(NSLinkAttributeName, at: characterIndex, effectiveRange: nil) != nil) {
                return self
            }
        }
        
        // otherwise return nil so the tap goes on to the next receiver
        return nil
    }

解决了,意思就是如果点击Textview没有url的时候,将点击事件传到下一层,这样的话,点击非蓝色部分,cell也可以响应点击事件了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 好奇触摸事件是如何从屏幕转移到APP内的?困惑于Cell怎么突然不能点击了?纠结于如何实现这个奇葩响应需求?亦或是...
    Lotheve阅读 58,885评论 51 604
  • 在iOS开发中经常会涉及到触摸事件。本想自己总结一下,但是遇到了这篇文章,感觉总结的已经很到位,特此转载。作者:L...
    WQ_UESTC阅读 11,303评论 4 26
  • 1.badgeVaule气泡提示 2.git终端命令方法> pwd查看全部 >cd>ls >之后桌面找到文件夹内容...
    i得深刻方得S阅读 10,233评论 1 9
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,223评论 4 61
  • 我记得,听你说过,以前你每次来图书馆都会写一篇简书,而后你选择了将它们都给删去。 未曾有幸看过你的那些文字,以前,...
    忘川行走阅读 1,391评论 0 0