我有一个iPhone / iOS应用程序,其中存在UIButtons(普通,带有文本标签;没有使用自定义图形),当按下时,将新的UIViewController推送到UINavigationController堆栈。
按钮间接显示在UIScrollView上;它们都直接在另一个在运行时构造的UIView上,然后将这个UIView添加到UIScrollView中。
问题:当用户按下其中一个按钮时,在大多数情况下,按钮不会显示为突出显示,尽管采取了正确的操作(正确的视图控制器被推入堆栈)。
如果我将按下检测设置为使用TouchUpInside而不是TouchDown,那么如果用户按住按钮一小段时间(可能是半秒?)按钮显示为突出显示,但使用TouchDown则很少突出显示,无论如何,即使用户只是轻轻按下按钮,我也希望突出显示。
我已经研究了这个网站和其他人的答案,并尝试了我发现的用于解决类似问题的各种方法。最可能的答案似乎是为UIScrollView将“delaysContentTouches”属性设置为NO,但是这个在我的申请中没有发现任何可辨别的差异。实际上,我发现的任何内容都没有令人满意地回答这个问题。
任何想法?...
答案 0 :(得分:13)
是的,延迟是由UIScrollView尝试检测滚动手势引起的,是的,您可以通过将delaysContentTouches
设置为NO来解决。此外,你应该始终使用UIControlEventTouchUpInside
而不是UIControlEventTouchDown
使用UIButton,因为这样可以让用户通过将手指拖离按钮来“改变主意”。