当我删除 UIpanguesture 时,为啥我的 UIScrollView 不滚动?

Posted

技术标签:

【中文标题】当我删除 UIpanguesture 时,为啥我的 UIScrollView 不滚动?【英文标题】:Why doesn't my UIScrollView Scroll when I remove UIPanguesture?当我删除 UIpanguesture 时,为什么我的 UIScrollView 不滚动? 【发布时间】:2017-05-31 20:15:57 【问题描述】:

我有一个可通过 uipangeuseture 拖动的 uiscrollview,同时我希望它可以滚动,但是当手势添加到视图时它不再滚动,它只会变得可拖动。即使我从滚动视图中删除该手势,它仍然不滚动,有什么想法吗?

我如何移除手势

backgroundframe.gestureRecognizers?.removeAll()

我如何添加手势

backgroundframe.addGestureRecognizer(self.guestureToAdd)

当我重新添加手势时,拖动仍然可以正常工作,但是当我删除它时,我的滚动视图停止滚动,我不知道为什么

【问题讨论】:

【参考方案1】:

UIScrollView 使用手势识别器来检测使其滚动和缩放的手势。如果您查看文档,您会发现它具有 panGestureRecognizerpinchGestureRecognizer 属性,您可以使用它们直接访问它的一些识别器,但它们也必须在其 gestureRecognizers 数组中才能实际工作。并且(至少通过 ios 10.3)它的gestureRecognizers 数组中至少还有一个识别器,它没有通过专用属性公开。

当您调用 backgroundframe.gestureRecognizers?.removeAll() 时,您将删除这些识别器。您需要删除您自己的识别器:

backgroundframe.removeGestureRecognizer(self.guestureToAdd)

[WWDC 2012 Session 223, “Enhancing User Experience with Scroll Views”],(https://developer.apple.com/videos/play/wwdc2012/223/) 讨论了UIScrollView 对手势识别器的使用。

【讨论】:

哇,谢谢!我不认为滚动会算作一种手势,认为它只是一个属性

以上是关于当我删除 UIpanguesture 时,为啥我的 UIScrollView 不滚动?的主要内容,如果未能解决你的问题,请参考以下文章

当我尝试从单链表中删除节点时,为啥我的 C 程序会崩溃

当我所做的只是一个列表时,为啥 Hibernate 会删除我的集合条目?

当我删除核心数据实体的最后一条记录时,为啥我的应用程序崩溃了?

为啥当我尝试创建一个从我的图书馆中删除书籍的功能时会出现错误?

为啥当我在 Flutter for Web 中更新实时数据库中的某个字段时我的数据被删除

当我删除相关对象时,为啥 Core Data 会复活已删除的对象?