2013-03-13 64 views

回答

0

首先您的视图中添加滚动视图和in.h中文件写入委托<UIGestureRecognizerDelegate,UIScrollViewDelegate>

在您的viewDidLoad写

UITapGestureRecognizer *singleFingerTap = 
    [[UITapGestureRecognizer alloc] initWithTarget:self 
              action:@selector(handleSingleTap:)]; 
    [self.view addGestureRecognizer:singleFingerTap]; 
    [singleFingerTap release]; 

    scrl.scrollEnabled = YES; // scrl is my UIScrollView 
    scrl.delegate = self; 
    scrl.contentSize=CGSizeMake(320, 680); 
    [self.view addSubview:scrl]; 

而且在handleSingleTap方法编写代码。它也会滚动,如果你点击视图,handleSingleTap方法将被调用。

+0

谢谢我会试试 – user2159978 2013-03-13 11:53:32

0

我在制作UIScrollView覆盖SpriteKit视图时遇到了类似的问题,因此用户可以滚动大型游戏菜单。滚动视图'窃取'所有的水龙头,我不能在滚动视图后面按按钮,就像我的'后退按钮'。我在滚动视图中也有按钮,我在我的原始精灵套件场景中拥有处理程序 - 并且厌恶进入我的可滚动视图。

因此,我通过简单地将所有的触摸事件发送给超类和超视图来解决这个问题。 我不确定是否有任何大的缺点,但我现在得到触摸和滚动。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [self.superview touchesBegan:touches withEvent:event]; 
    [super touchesBegan:touches withEvent:event]; 
} 

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [self.superview touchesMoved:touches withEvent:event]; 
    [super touchesMoved:touches withEvent:event]; 
} 

-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [self.superview touchesCancelled:touches withEvent:event]; 
    [super touchesCancelled:touches withEvent:event]; 
} 

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [self.superview touchesEnded:touches withEvent:event]; 
    [super touchesEnded:touches withEvent:event]; 
}