【问题标题】:UIButton not working when single tap gesture is added to superview将单击手势添加到超级视图时,UIButton 不起作用
【发布时间】:2011-06-06 07:45:24
【问题描述】:

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

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

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

现在,每次我点击按钮时,它看起来都像是被点击了,但它会触发手势识别器代码而不是按钮操作。

我怎样才能使按钮在我点击按钮时起作用,而在我点击视图中的其他任何位置时点击手势起作用?

【问题讨论】:

    标签: iphone ios uibutton subview uigesturerecognizer


    【解决方案1】:

    这是一个简单的解决方案

    singleTapGesture.cancelsTouchesInView = NO;
    

    【讨论】:

    • 太棒了。这正是我所需要的。
    【解决方案2】:

    您的问题与此问题类似,希望已得到解答;)

    UIButton inside a view that has a UITapGestureRecognizer

    【讨论】:

    • 是的,这就是我要找的。谢谢,我在寻找答案时没有看到这个。
    【解决方案3】:

    安德鲁,

    在我看来,您想在用户点击 UI 对象以外的任何位置时调用一个函数。

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

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

    它比您在代码中尝试的更简单

    【讨论】:

    • 感谢您的建议,但这听起来很麻烦。在我看来,它应该首先处理按钮(子视图)然后转到超级视图,我只是不确定它为什么不这样做或者我做错了什么才能让它这样做。
    猜你喜欢
    • 1970-01-01
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多