UIScrollView、泛感知识别器和iOs 4
我有一个可滚动的视图,我需要的手势识别器,将在不滚动主视图的情况下启动 我使用了以下代码:UIScrollView、泛感知识别器和iOs 4,ios,ios4,uigesturerecognizer,uipangesturerecognizer,Ios,Ios4,Uigesturerecognizer,Uipangesturerecognizer,我有一个可滚动的视图,我需要的手势识别器,将在不滚动主视图的情况下启动 我使用了以下代码: UISwipeGestureRecognizer *upRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(upSwipeHandle:)]; upRecognizer.direction
UISwipeGestureRecognizer *upRecognizer =
[[UISwipeGestureRecognizer alloc] initWithTarget:self
action:@selector(upSwipeHandle:)];
upRecognizer.direction = UISwipeGestureRecognizerDirectionUp;
[upRecognizer setNumberOfTouchesRequired:2];
[controller.view addGestureRecognizer:upRecognizer];
[[controller.scrollView panGestureRecognizer]
requireGestureRecognizerToFail:upRecognizer];
但它似乎只适用于iOS 5。如何在iOS 4中使用相同的识别器?我使用UIgestureRecognitor委托方法解决了我的问题 加上
upRecognizer.delegate = self;
这种方法:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
if ([gestureRecognizer isKindOfClass:[UISwipeGestureRecognizer class]] && [otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) {
return YES;
}
return NO;
}
我遇到了同样的问题。我在4.3模拟器中运行了类似的代码,但该代码失败了,因为scrollView.panGestureRecognizer仅在iOS 5.0+中可用 我通过向UIScrollView添加一个类别解决了这个问题
@interface UIScrollView(panGestureRecognizer)
@end
@implementation UIScrollView(panGestureRecognizer)
// iOS5 has a panGestureRecognizer property
// Add a getter for iOS 4.3+
- (UIPanGestureRecognizer *)panGestureRecognizer
{
for (UIGestureRecognizer *gestureRecognizer in self.gestureRecognizers)
{
if ([gestureRecognizer isKindOfClass: [UIPanGestureRecognizer class]]) {
return (UIPanGestureRecognizer *)gestureRecognizer;
}
}
return nil;
}
@end