zhi*_*jie 7 storyboard uibutton ios5 ios6
我有一个包含大量UIButton的项目,使用xcode 4.5和storyboard以及ARC.在ios6中测试后,一切都很顺利.但在ios5中,UIButton触及内部事件不起作用,动作未调用.我尝试使用触摸它,它的工作原理.但是,我有很多UIButton,我不能一一改变.更重要的是,降落事件确实提供了良好的体验.
我在许多视图控制器中使用了以下代码:在viewDidLoad中:
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(dismissKeyboard)];
[self.view addGestureRecognizer:tap];
-(void)dismissKeyboard {
[aTextField resignFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)
这可能是原因.我稍后会看看.但它适用于ios6.你知道什么是错的吗?非常感谢!
LEA*_*D2M 16
我遇到了同样的问题.这是因为当您注册的gestureRecognizer捕获事件时,会阻止iOS5中的触摸事件.
有两种解决方案.
一:
1)在视图中添加新视图.它应该与按钮具有相同的级别.按钮的优先级应高于新视图.
2)将'addGestureRecognizer'的调用更改为新视图.
[self.newView addGestureRecognizer:tap];
Run Code Online (Sandbox Code Playgroud)
二:
1)实现以下代码.当点在按钮中时,您应该返回NO.
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
CGPoint point = [gestureRecognizer locationInView:self.view];
NSLog(@"x = %.0f, y = %.0f", point.x, point.y);
if (CGRectContainsPoint(self.testBtn.layer.frame, point))
return NO;
return YES;
}
Run Code Online (Sandbox Code Playgroud)
PS.你应该导入QuartzCore.h来访问图层的属性.
#import <QuartzCore/QuartzCore.h>
Run Code Online (Sandbox Code Playgroud)
只需在UITapGestureRecognizer上使用属性"cancelsTouchesInView"(NO)即可
例:
UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTap)];
gesture.cancelsTouchesInView = NO;
[self.view addGestureRecognizer:gesture];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3586 次 |
| 最近记录: |