美文网首页
YYTextView的一些记录

YYTextView的一些记录

作者: limbo_lyn | 来源:发表于2020-01-19 17:26 被阅读0次

    1、在UITableView中使用选择文本和复制功能

    产生的问题:因为YYTextView本身也是一个UIScrollView,所以会导致手势冲突

    解决方案:

        NotificationCenter.default.addObserver(self,

                                               selector:#selector(willShowEditMenu),

                                               name: NSNotification.Name.UIMenuControllerWillShowMenu,

                                               object:nil)

        NotificationCenter.default.addObserver(self,

                                               selector:#selector(didHideEditMenu),

                                               name: NSNotification.Name.UIMenuControllerDidHideMenu,

                                               object:nil)

        // 防止复制时 滑动事件和tableview的冲突 导致复制错误

        @objc func willShowEditMenu() {

            self.tableView.canCancelContentTouches = false

            self.tableView.delaysContentTouches = false

        }

        @objc func didHideEditMenu() {

            self.tableView.canCancelContentTouches = true

            self.tableView.delaysContentTouches = true

        }

    解释下canCancelContentTouches和delaysContentTouches两个属性

    delaysContentTouches和canCancelContentTouches都是scrollView的一个属性,在讲这两个属性之前,首先要讲下scrollView的一个机制。

    从你的手指touch屏幕开始,scrollView开始一个timer,如果:

    150ms内如果你的手指没有任何动作,消息就会传给subView。

    150ms内手指有明显的滑动(一个swipe动作),scrollView就会滚动,消息不会传给subView。

    150ms内手指没有滑动,scrollView将消息传给subView,但是之后手指开始滑动,scrollView传送touchesCancelled消息给subView,然后开始滚动。

    delaysContentTouches:默认值为YES。如果设置为NO,则会立即把事件传递给subView。

    canCancelContentTouches:默认为YES,如果设置为NO,这消息一旦传递给subView,这scroll事件不会再发生。

    相关文章

      网友评论

          本文标题:YYTextView的一些记录

          本文链接:https://www.haomeiwen.com/subject/eporzctx.html