2012-06-14 46 views
1


我想阻止在我的UIScrollview的第3页滚动和“劫持滑动”手势触发某事。其他。在这个动作之后,我想要反应式滚动。在UIScrollView劫持“滑动到下一页”

这不起作用。

- (void)scrollViewDidScroll:(UIScrollView *)sender 
{ 
    if(scrollView.contentOffset.x == self.view.frame.size.width * 2 ) { 
     // disable scrolling 
     scrollView.scrollEnabled = NO; 
    } 
} 


// hijack the next scrolling event 
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 

此委托不叫当scrollEnabled = NO

感谢您的帮助


编辑事件处理IST不叫;-(

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Default background color 
    self.view.backgroundColor = [UIColor redColor]; 

    // Create scroll view 
    scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
    scrollView.pagingEnabled = YES; 
    scrollView.showsHorizontalScrollIndicator = NO; 
    scrollView.showsVerticalScrollIndicator = NO; 
    scrollView.scrollsToTop = NO; 
    scrollView.delegate = self; 


    UISwipeGestureRecognizer *recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)]; 
    recognizer.direction = UISwipeGestureRecognizerDirectionLeft; 
    [scrollView addGestureRecognizer:recognizer]; 
    [recognizer release]; 
    [scrollView delaysContentTouches]; 

    // Create subviews (pages) 
    NSInteger numberOfViews = 4; 
    for (int i = 0; i < numberOfViews; i++) { 
     // x pos 
     CGFloat yOrigin = i * self.view.frame.size.width; 

     // Create subview and add to scrollView 
     UIView *pageView = [[UIView alloc] initWithFrame:CGRectMake(yOrigin, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
     pageView.backgroundColor = [UIColor colorWithRed:0.5/i green:0.5 blue:0.5 alpha:1]; 

     [scrollView addSubview:pageView]; 
     [pageView release]; 
    } 

    // Set contentsize 
    scrollView.contentSize = CGSizeMake(self.view.frame.size.width * numberOfViews, self.view.frame.size.height); 


    // Add scrollView to view and release 
    [self.view addSubview:scrollView]; 
    [scrollView release]; 

} 


-(void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer { 
    NSLog(@"swipe!!!!"); 
    scrollView.scrollEnabled = YES; 
} 

回答

2

如果你disa竹叶提取滚动视图:

scrollView.scrollEnabled = NO; 

是不可避免的委托方法不叫,所以你需要另一种方式来处理刷卡,而在劫持模式。有一两件事你可以尝试使用一个UISwipeGestureRecognizer:不是简单地禁用滚动,你可以一个UISwipeGestureRecognizer来查看和关联从处理方法处理刷卡:

UISwipeGestureRecognizer *recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)]; 
recognizer.direction = UISwipeGestureRecognizerDirectionRight; 
[self.view addGestureRecognizer:recognizer]; 

handleSwipeFrom你会重新启用滚动:

-(void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer { 
    // do your hijack here 
    scrollView.scrollEnabled = YES; 
} 
+0

我应该将GestureRecognizer添加到scollView还是添加到“SubView”之一。我的演示中没有调用handleSwipeFrom。 – fabian

+0

我建议无论是对于scrollView还是其超级视图...另外,不要忘记设置滑动的方向(请参阅我的编辑在几秒钟内)... – sergio

+0

仍然没有工作(更新我的代码) – fabian