【发布时间】:2017-12-01 04:27:40
【问题描述】:
我有以下设置:
带有一些文字的UITextView,其中一些是链接。
当我将isEditable 值设置为false 时,当点击那些现在可以操作的链接 时,我无法初始化任何滚动。
如何使从链接开始的触摸事件实际拖动
UITextview当用户做滚动手势时。
【问题讨论】:
标签: ios swift uiscrollview uitextview
我有以下设置:
带有一些文字的UITextView,其中一些是链接。
当我将isEditable 值设置为false 时,当点击那些现在可以操作的链接 时,我无法初始化任何滚动。
如何使从链接开始的触摸事件实际拖动
UITextview当用户做滚动手势时。
【问题讨论】:
标签: ios swift uiscrollview uitextview
要克服这个困难,步骤如下:
假设您有一个继承自UIScrollView 的类,例如
RichTextView : UITextView(因为UITextView 继承自UIScrollView),那么你就有了panGestureRecognizer 的属性。该属性保存指定的滚动手势识别器。
下一步是创建一个委托来分配给这个手势识别器,让我们编写所需的代码:
extension RichTextView : UIGestureRecognizerDelegate {
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
}
所以在你的 init() 或者需要的时候写:
panGestureRecognizer.delegate = self
为什么会这样?
儿童识别器,在这种情况下,为使链接可点击而创建的识别器正在取消手势。因此需要同时将手势传递给所有识别器
更多详情请参考Apple Docs
【讨论】: