单击手势添加到superview时,UIButton无法正常工作

时间:2011-01-10 03:42:14

标签: iphone ios uibutton subview uigesturerecognizer

我有一个UIButton设置并像往常一样连接到我的视图控制器中的动作。这本身就可以了。

现在,我已将以下内容添加到我的视图控制器中以设置单击:

- (void)viewDidLoad {
[super viewDidLoad];
UITapGestureRecognizer * singleTapGesture = [[UITapGestureRecognizer alloc] 
                                             initWithTarget:self
                                             action:@selector(handleSingleTap:)];
[self.view addGestureRecognizer:singleTapGesture];
[singleTapGesture release]; }

现在,每次点击按钮时,它都会被点击,但它会触发手势识别器代码,而不是按钮动作。

当我点按按钮时按钮是否有效以及当我点按视图中的任何其他位置时,点按手势是否有效,我该如何制作呢?

3 个答案:

答案 0 :(得分:13)

你的问题类似于这个问题,希望得到回答;)

UIButton inside a view that has a UITapGestureRecognizer

答案 1 :(得分:10)

这是一个简单的解决方案

singleTapGesture.cancelsTouchesInView = NO;

答案 2 :(得分:1)

安德鲁,

在我看来,当用户点击除UI对象以外的任何地方时,你想调用一个函数。

所以我的建议是创建一个屏幕大小的自定义按钮(假设显示灰色条,则为320x460),将其放回IB中的所有对象。到这个时候,您将能够看到几乎0%不透明度的UIButton。

从IB中将自定义按钮的选择器选项拖到文件所有者,然后选择要调用的功能,您就完成了。

比你在代码中尝试的更简单