Ios 使用图像附件时UITextView不可滚动

Ios 使用图像附件时UITextView不可滚动,ios,uitextview,attachment,Ios,Uitextview,Attachment,我有UITextView和attributedString以及图像附件。UITextView不可编辑,但可选择 问题在于图像附件。当我开始滚动UITextView,并开始触摸图像附件时(我的手指)。大多数时候它是不可滚动的。如果我滚动得很快,它就会工作。但如果我用手指按住图像附件,即使时间很短,它也不会滚动。 触摸被识别为图像附件上的选择(在我移开手指后图像将高亮显示) 我试图禁用UITextView的isSelectable属性,但问题消失了。但这不是我想要的。我希望它可以在普通文本上选择 我

我有
UITextView
attributedString
以及图像附件。
UITextView
不可编辑,但可选择

问题在于图像附件。当我开始滚动
UITextView
,并开始触摸图像附件时(我的手指)。大多数时候它是不可滚动的。如果我滚动得很快,它就会工作。但如果我用手指按住图像附件,即使时间很短,它也不会滚动。
触摸被识别为图像附件上的选择(在我移开手指后图像将高亮显示)

我试图禁用
UITextView
isSelectable
属性,但问题消失了。但这不是我想要的。我希望它可以在普通文本上选择

我试图禁用
UITextView
的所有
uilongpressurerecognizer
,但没有成功。问题仍然存在

我可以有一个解决方案,我可以保持选择,并避免图像附件吃掉了滚动的同时?提前谢谢

我完成了

我假设在
UITextView
中,选择的实现是通过
uilongpressurerecognizer
,滚动的实现是通过
uipangesturecognizer

因此,如果我阻止长按手势被识别,直到平移手势失败,长按将不再吞噬滚动

首先,我有
UITextView
子类。在该子类中,在适当的点循环通过
uigesturecognizers
UITextView
。我在方法
didMoveToSuperview()
中做了这件事

第二,实现方法
gestureRecognizer(\uGestureRecognizer:UIGestureRecognizer,其他gestureRecognizer:UIGestureRecognizer应该需要AI)->Bool
来自
UIGestureRecognizerDelegate
协议

extension CustomTextView: UIGestureRecognizerDelegate {    
    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldBeRequiredToFailBy otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        // all UILongPressGestureRecognizer has to wait UIPanGestureRecognizer to be failed before recognized
        if gestureRecognizer.isKind(of: UIPanGestureRecognizer.self) && otherGestureRecognizer.isKind(of: UILongPressGestureRecognizer.self) {
            return true
        }
        return false
    }
}

extension CustomTextView: UIGestureRecognizerDelegate {    
    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldBeRequiredToFailBy otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        // all UILongPressGestureRecognizer has to wait UIPanGestureRecognizer to be failed before recognized
        if gestureRecognizer.isKind(of: UIPanGestureRecognizer.self) && otherGestureRecognizer.isKind(of: UILongPressGestureRecognizer.self) {
            return true
        }
        return false
    }
}