通过点击主 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 模拟器 6.0 和具有 iOS 6.0 的真实设备中,一切正常,在模拟器 iOS 5.0 和具有 5.0 的设备中,我有一个非常奇怪的行为:仅当我拖动该按钮的区域时,按钮才开始工作,当我单击按钮 - 它称为当用户点击屏幕中的任何位置时调用的方法,就像我的按钮没有出现在屏幕上(但在视觉上它确实出现)。我的目标是为 5.x 制作这个应用程序,所以我尝试寻找这个奇怪问题的答案。
欢迎任何建议!
您是否要添加一个UITapGestureRecognizer
到 infoView 或它的任何子视图?
如果是这种情况,则您的手势识别器正在禁止 UIButton 操作。您可以使用 Kevin Ballard 或 cdasher 提供的解决方案这个帖子 https://stackoverflow.com/questions/3344341/uibutton-inside-a-view-that-has-a-uitapgesturerecognizer
您只需要设置具有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];
希望这可以帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)