UIButton 在 iOS 5.x 中不起作用,在 iOS 6.x 中一切正常

Posted

技术标签:

【中文标题】UIButton 在 iOS 5.x 中不起作用,在 iOS 6.x 中一切正常【英文标题】:UIButton not works in iOS 5.x , everything is fine in iOS 6.x 【发布时间】:2012-11-22 15:10:30 【问题描述】:

通过点击主 UIView 上的简单 UIButton,附加视图(子视图)出现在屏幕中心(以编程方式创建的子视图)。在那个子视图上,我有 UIButton 启动 MPMoviePlayer(此代码在创建子视图的方法内部):

 // Create play button

UIButton *playButton = [UIButton buttonWithType:UIButtonTypeCustom];
[playButton addTarget:self
               action:@selector(wtf)
     forControlEvents:UIControlEventTouchUpInside];

[playButton setTitle:@"" forState:UIControlEventTouchUpInside];
[playButton setImage:[UIImage imageNamed:[self.playButtons objectAtIndex:[sender tag] - 1]] forState:UIControlStateNormal];
playButton.frame = playButtonRect;
playButton.userInteractionEnabled = YES;

这个按钮在同一个方法中作为子视图添加到这个视图中:

[self.infoView addSubview:playButton];

ios Simulator 6.0 和带有 iOS 6.0 的真实设备中,一切正常,在 Simulator iOS 5.0 和带有 5.0 的设备中,我有一个非常奇怪的行为:只有当我通过这个按钮的区域进行拖动时,按钮才开始工作,当我只需点击按钮 - 它调用方法,当用户点击屏幕上的任何位置时调用,就像我的按钮没有出现在屏幕上(但在视觉上它确实出现了)。我的目标是为 5.x 制作这个应用程序,所以我尝试在这个奇怪的问题上找到答案。

欢迎任何建议!

【问题讨论】:

【参考方案1】:

您是否将UITapGestureRecognizer 添加到 infoView 或其任何子视图?

如果是这种情况,您的手势识别器正在禁止 UIButton 操作。您可以使用 Kevin Ballard 或 cdasher 提供的解决方案 this post

您只需将具有 UITapGestureRecognizer 的视图设置为该手势识别器 (UIGestureRecognizerDelegate) 的代表。然后可以添加如下代码:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch

    return ! ([touch.view isKindOfClass:[UIControl class]]);

您的点按手势识别器应如下所示:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureAction)];
tap.delegate = self;
[self.view addGestureRecognizer:tap];

希望这会有所帮助!

【讨论】:

感谢您的建议!但是如何在不同的 iOS 版本中有不同的行为呢?在 iOS 6.x 中用户与手势交互的方式是否发生了变化? 嗨,Alexey,我的荣幸!似乎在 iOS 6 中他们已经默认克服了这个问题,但我不确定。无论如何,您解决了问题吗?还是仍在发生? 将尝试在我的项目中实施您的答案,然后在此处报告结果。 太棒了!看来你已经解决了。如果您有任何其他困难,请随时告诉我。祝你好运! 您好,我对 Gesture 也有同样的问题。我在 Self.view 中添加 Tap Gesture 并在 UItableview 上添加 1 个滑动手势。表头部分中的 UIButton。这对我不起作用。请帮我解决..谢谢Suresh

以上是关于UIButton 在 iOS 5.x 中不起作用,在 iOS 6.x 中一切正常的主要内容,如果未能解决你的问题,请参考以下文章

Youtube 视频有时在 ios 中不起作用

UIButton 在 UIPopoverController 中不起作用

UIButton 在 collectionView 单元格中不起作用

UIButton 的 Swift addTarget 在 UIView 中不起作用

UIButton 在子视图控制器中不起作用

.normal 选项在 UIButton 的状态 OptionSet 中不起作用(Swift 3)