我有一个子视图,其中UIButton添加到UIScrollView中。
只要用户不滚动,按钮就可以正常工作。如果用户单击按钮时UIScrollView仍在滚动,它只是停止滚动(就像单击了一行一样)。
有人知道怎么解决这个问题吗?
首先,确保这确实是你想要的行为-iOS用户习惯于滚动视图并触摸以在不触发按钮按下的情况下点击停止它们。非标准行为(即使你认为它比标准行为更好)可能会让习惯于其他iOS应用程序工作方式的用户感到困惑——这可能会违反他们的心理模型。好的,注意结束。
那么你该如何解决这个问题呢?CCD_ 1延迟发送触摸事件,直到它知道这些触摸是否是滚动事件。您的问题是,当UIScrollView
移动时,用户点击是滚动事件。两种可能的解决方案:
-
停止
UIScrollView
延迟其获得的任何触摸事件。您可以将任何滚动视图delaysContentTouches
设置为NO
,这将停止延迟操作,并允许在滚动时点击您的按钮。您可以在UIScrollView
类文档中了解它。你还想在那里阅读canCancelContentTouches
。 -
将
UIScrollView
子类添加到您自己的关于触摸事件应该去哪里的逻辑中。这是一篇讨论如何做到这一点的博客文章。