如何让UIButton只响应触摸,而不是拖动

时间:2011-02-09 13:40:39

标签: iphone objective-c ipad ios uicontrol

看看这个方法:

[textButton addTarget:self action:@selector(articleModalWillAppear:) forControlEvents:UIControlEventTouchDown];

触摸该按钮时,会调用articleModalWillAppear:。这很好用。问题是按钮在拖动时也会调用操作。 (按钮很大,包含文本段落)

我把6个这样的按钮作为UIScrollView的子视图(使用UIPageControl)。水平拖动UIScrollView时效果很好。但是当垂直拖动时会弹出模态视图,因为当手指拖过按钮时,按钮会将其视为触摸,触摸会调用articleModalWillAppear:

如果您仍然不了解我的问题,请考虑纽约时报的iPad应用程序。您可以水平拖动页面。您可以触摸文章说明以转到完整的文章视图。但是在文章描述中垂直拖动时没有任何反应。怎么做到这一点?

2 个答案:

答案 0 :(得分:1)

使用其他事件,例如:

[textButton addTarget:self action:@selector(articleModalWillAppear:) forControlEvents:UIControlEventTouchUpInside];
在这种情况下,

UIControlEventTouchUpInside是最常用的。

答案 1 :(得分:1)

使用forControlEvents:UIControlEventTouchUpInside

只有在用户触摸按钮内部然后触摸同一按钮时才会注册点击事件,并忽略拖动。