0

是否可以同时处理 UIScrollView 的滚动事件和 UIView 背后的触摸事件?我发现 UIView 仅在 UIScrollView 禁用其自己的用户交互时处理其触摸事件。

4

2 回答 2

0

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

在你看来DidLoad 写

    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 方法。

于 2013-03-13T09:19:35.440 回答
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];
}
于 2015-04-01T15:33:43.140 回答