【问题标题】:UIButton UIControlEventTouchUpInside does not fire, but UIControlEventTouchDown does fireUIButton UIControlEventTouchUpInside 不会触发,但 UIControlEventTouchDown 会触发
【发布时间】:2011-12-06 18:23:08
【问题描述】:

我正在实施UIButton,我的UIControlEventTouchUpInside 事件没有触发,即使UIControlEventTouchDown 确实触发了。

UIButton *btnClose = [UIButton buttonWithType:UIButtonTypeCustom];
NSString *filePathImage = @"img.png";
NSString *filePathImageTap = @"img-tap.png";
UIImage *buttonImage = [UIImage imageWithContentsOfFile:filePathImage];
UIImage *buttonImageTap = [UIImage imageWithContentsOfFile:filePathImageTap];
[btnClose setImage:buttonImage forState:UIControlStateNormal];
[btnClose setImage:buttonImageTap forState:UIControlStateSelected];
[btnClose setImage:buttonImageTap forState:UIControlStateHighlighted];      
[btnClose addTarget:self action:@selector(close:) forControlEvents:UIControlEventTouchUpInside];    
[self.view addSubview:btnClose];

【问题讨论】:

  • 请贴出-close:的实现。我怀疑您的方法实际上并没有带参数,但是通过在选择器中添加冒号,发送了错误的消息。
  • 您在哪里为UIControlEventTouchDown 控制事件指定了目标和操作?
  • 好的,伙计们,我解决了我的愚蠢问题,我让 UITapGestureRecognizer 捕获视图上的所有事件。我错过了。很抱歉,感谢您的帮助。
  • @iosdevnyc 您应该将此评论作为答案,它对我有所帮助。做同样的事情......durrrr时刻。
  • @iosdevnyc:请将您的解决方案发布为答案并将其标记为已接受,以帮助其他人更轻松。

标签: objective-c ios uibutton uicontrolevents


【解决方案1】:

我有一个假设为什么它不采用UIControlEventTouchUpInside

我在两个不同的 ViewController 中有两个“BannerView”(广告)。在一个中它运行良好,在另一个中我看到UIButton 是如何被触摸的,第二个图像(更暗)出现了。但是选择器没有被击中。然后我意识到,Up-Event 被下面的UIImageView 中的UISwipeGestureRecognizer 吸收了。一些Recognizer 互相竞争。我搜索了一个概述以查看这些女巫,但一无所获。

另一种解决方案: 如果您看到 ButtonState 没有改变,您必须查看您的 Button 是否有视图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-07
    相关资源
    最近更新 更多