'静态'UIButton ontop UIScrollview?

时间:2011-03-31 07:05:52

标签: iphone uiscrollview uibutton touches

我想要达到一个相当简单的效果。一个scrollView和它上面的静态按钮。 到目前为止还没问题。不幸的是,如果我想滚动视图“低谷”按钮,就会出现问题。因此,开始在按钮内拖动将影响按钮,而不是滚动视图。

关于如何实现这一目标的任何想法?

非常感谢!

我认为这种方法不起作用,因为在UIScrollView中不推荐使用touchesBegan ...(这个信息是真的吗?)

不是解决方案: - )

@implementation MySuperButton

+ (id)buttonWithFrame:(CGRect)frame {
    return [[[self alloc] initWithFrame:frame] autorelease];
}

- (id)initWithFrame:(CGRect)frame {
    if (self == [super initWithFrame:frame]) {
        NSLog(@"initWithFrame");
    }
    return self;
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [super touchesBegan:touches withEvent:event];
    [self.nextResponder touchesBegan:touches withEvent:event];
    NSLog(@"[self nextResponder]: %@", [self nextResponder]);
}

@end

不幸的是,这不起作用。我认为下一个响应者是我的UIView而不是我的UIScrollView。有什么想法吗?

如果我的viewcontroller是nextResponder,将触摸传递给scrollView,那么也没有任何反应。

5 个答案:

答案 0 :(得分:12)

不将按钮添加到滚动视图,而是添加到其父视图,一切都应该正常工作。直接触摸按钮将传递到按钮,背景上的触摸(滚动视图)将传递到滚动视图。

由于该按钮不是滚动视图的子视图,因此它不会随背景一起移动(我认为你的意思是 static )。

答案 1 :(得分:1)

我从来没有玩过很多触摸事件等等,但无论如何我都会尝试帮助我的基本理解。

尝试将按钮的exclusiveTouch设置为NO。不确定,但也许enableMultitouch也是YES。

如果这不起作用,我可以尝试继承UIButton,覆盖触摸事件并在[super touchEventX:]之前/之后将它们传递给[self nextResponder]?

答案 2 :(得分:1)

有点难以理解你想要实现的目标。你想滚动按钮吗?

  

因此,开始在按钮内拖动将影响按钮,而不是滚动视图。

目前尚不清楚这是您想要的行为还是您想要改变的行为。

如果是前Eiko的答案是正确的,如果是后者你应该将按钮添加为滚动视图的子视图,并在调用scrollViewDidScroll:时更新其框架。我从未尝试过这个,但它在理论上有效。

答案 3 :(得分:0)

将整个滚动视图向下移动按钮的高度,并将其高度缩小相同的量。然后将按钮放在滚动视图上方 - 因此它不是滚动视图的子项。

答案 4 :(得分:0)

如果您在视图中添加简单按钮,那么如果您触摸按钮。它将调用它的动作。

同一开头

如果您在 ScroolView 中添加简单按钮,那么如果您触摸按钮。它将调用它的动作。

如果你触摸scroolview的空白区域,那么调用UIScrollView的委托方法。

如果您将手指放在按钮上并拖动它会显着影响滚动视图。 scrollview将拖动100%