YYTextView的一些记录

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的一些记录)