我有一个子视图,其中UIButton添加到UIScrollView。
只要用户不滚动,该按钮就能正常工作。 如果UIScrollView在用户点击按钮时仍然滚动,则它会停止滚动(就像单击一行一样)。
任何人都知道如何解决这个问题?
答案 0 :(得分:2)
首先,确保这确实是您想要的行为 - iOS用户习惯于滚动视图并触摸以通过点按来停止它们而不会触发按钮按下。非标准行为(即使您认为更好然后是标准行为)可能会让用户感到困惑,因为用户习惯了其他iOS应用中的工作方式 - 它可能会违反他们的mental model。好的,请注意谨慎。
那你怎么解决这个问题呢? UIScrollView
延迟发送触摸事件,直到它知道这些触摸是否是滚动事件。问题是用户在UIScrollView
移动时点击是滚动事件。两种可能的解决方案:
停止UIScrollView
延迟所获得的任何触摸事件。您可以将任何滚动视图delaysContentTouches
设置为NO
,这将停止延迟操作,并允许在滚动时点按您的按钮。您可以在UIScrollView
class documentation中阅读相关内容。您还需要在canCancelContentTouches
阅读。
对UIScrollView
进行子类化,以添加关于触摸事件应该去哪里的逻辑。 Here is a blog post that discusses how to do this