iOS5 GestureRecognizer仅在第二次点击时触发

时间:2012-11-27 03:02:21

标签: objective-c ios5 uigesturerecognizer uitapgesturerecognizer

有人知道为什么只有在ios5中第二次点击后才会调用Tap手势识别器,尽管在ios6中它可以在一次点击后正常工作。

代码在ios6中运行,我在单独的项目中尝试了这个代码,也适用于ios5,我认为它与项目设置有关,但我找不到哪个。

我的代码是:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.title = questTitle;
    //add coretextview
    scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
    scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    coreTextView = [[FTCoreTextView alloc] initWithFrame:CGRectMake(20, 20, 280, 0)];
    coreTextView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    // set text
    [coreTextView setText:[self textForView]];
    // set styles
    [coreTextView addStyles:[self coreTextStyle]];
    // set delegate
    [coreTextView setDelegate:self];

    [coreTextView fitToSuggestedHeight];
    scrollView.scrollEnabled = TRUE;

    [scrollView addSubview:coreTextView];
    [scrollView setContentSize:CGSizeMake(CGRectGetWidth(scrollView.bounds), CGRectGetHeight(coreTextView.frame) + 40)];


     [self.view addSubview:scrollView];

    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];
tapGesture.delegate = (id <UIGestureRecognizerDelegate>)self;
[coreTextView addGestureRecognizer:tapGesture];
tapGesture.numberOfTapsRequired = 1;            // How many taps
tapGesture.numberOfTouchesRequired = 1;


coreTextView.userInteractionEnabled = YES;

tapGesture.cancelsTouchesInView = NO;
scrollView.userInteractionEnabled = YES;
scrollView.exclusiveTouch = NO;
scrollView.delegate = self;
[tapGesture release];


}


- (void)pan:(UITapGestureRecognizer*)sender {
     NSLog(@"Pan tap");
}



- (BOOL)gestureRecognizerShouldBegin:(UITapGestureRecognizer *)gestureRecognizer{
      NSLog(@"tap");
    return YES;
}

- (BOOL)gestureRecognizer:(UITapGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UITapGestureRecognizer *)otherGestureRecognizer{
      NSLog(@"tap");
    return YES;
}
- (BOOL)gestureRecognizer:(UITapGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
      NSLog(@"tap");
    return YES;
}

0 个答案:

没有答案