iOS开发

Tap 手势和 YYText Action冲突问题

2025-05-18  本文已影响0人  高浩浩浩浩浩浩

https://github.com/ibireme/YYText/issues/38

在Rx中写法如下:

topView.rx.tapGesture(configuration: { gestureRecognizer, delegate in
        gestureRecognizer.cancelsTouchesInView = false
        gestureRecognizer.delegate = self
    })
    .when(.recognized)
    .map { _ in () }
    .bind(to: cellData.topAction)
    .disposed(by: disposeBag)

open override func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
    let point = touch.location(in: self.titleLabel)
    if let textLayout = self.titleLabel.textLayout,
       let range = textLayout.textRange(at: point) {
        let idx = range.start.offset
        if let attr = self.titleLabel.attributedText?.attributes(at: idx, effectiveRange: nil),
           attr[NSAttributedString.Key("YYTextHighlight")] != nil {
            // 在高亮区,tap 手势不响应,事件会传到 label
            return false
        }
    }
    return true
}
上一篇 下一篇

猜你喜欢

热点阅读