加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – UIButton在iOS 5.x中不起作用,iOS 6.x中的一切都

发布时间:2020-12-16 05:31:28 所属栏目:百科 来源:网络整理
导读:通过在主UIView上点击简单的UIButton,附加的View(子视图)将出现在屏幕中央(子视图以编程方式创建).在该子视图中,我有UIButton启动MPMoviePlayer(此代码是内部创建子视图的方法): // Create play buttonUIButton *playButton = [UIButton buttonWithType:UIB
通过在主UIView上点击简单的UIButton,附加的View(子视图)将出现在屏幕中央(子视图以编程方式创建).在该子视图中,我有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模拟器6.0和真正的设备与iOS 6.0一切都很好,在模拟器iOS 5.0和设备与5.0我有一个非常奇怪的行为:按钮开始工作,只有当我拖动该按钮的区域,当我点击按钮 – 它被称为方法当用户点击屏幕上的任何位置时调用,就像我的按钮不会出现在屏幕上(但在视觉上).我的目标是使这个应用程序为5.x,所以我试图找到这个奇怪的问题的答案.

欢迎任何意见!

解决方法

您是否向infoView或其任何子视图添加了UITapGestureRecognizer?

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

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

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    return ! ([touch.view isKindOfClass:[UIControl class]]);
}

您的Tap Gesture Recognizer应该如下所示:

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

希望这可以帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读