1

我有一个 UIButton 添加到 UIScrollView 的子视图。

只要用户不滚动,该按钮就可以正常工作。如果用户单击按钮时 UIScrollView 仍在滚动,它只会停止滚动(就像单击了一行一样)。

有人知道怎么修这个东西吗?

4

1 回答 1

2

首先,确保这确实是您想要的行为 - iOS 用户习惯于滚动视图并通过点击来停止它们而不触发按钮按下。非标准行为(即使你认为它标准行为更好)可能会让习惯于在其他 iOS 应用程序中工作的用户感到困惑——它可能会违反他们的心理模型。好的,注意事项结束。

那么你如何解决这个问题?UIScrollView延迟发送触摸事件,直到它知道这些触摸是否是滚动事件。您的问题是用户点击移动时的滚动事件UIScrollView。两种可能的解决方案:

  1. 停止UIScrollView延迟它获得的任何触摸事件。您可以将任何滚动视图设置delaysContentTouchesNO,这将停止延迟操作,并应允许在滚动时点击您的按钮。UIScrollView你可以在类文档中阅读它。您还需要阅读canCancelContentTouches那里的内容。

  2. 子类化UIScrollView以添加您自己的关于触摸事件应该去哪里的逻辑。这是一篇讨论如何执行此操作的博客文章

于 2012-12-08T21:09:44.737 回答