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
}