将滚动事件从uibutton传递到uiscrollview

时间:2010-09-17 08:41:22

标签: iphone scroll uiscrollview uibutton

我的水平UIScrollViewUIScrollView延伸,我水平添加了UIButtons。我只能滚出按钮区域,但如果我想滚动任何按钮,则会触发UIControlEventTouchUpInside事件。我不想要这个。我想点击UIControlEventTouchUpInside动作,如果我点击我想滚动。

那么如何将滚动事件从UIButton传递到UIScrollView

4 个答案:

答案 0 :(得分:4)

UIScrollView子类,在- touchesShouldCancelInContentView:方法中返回YES。

答案 1 :(得分:3)

该功能已经内置。当您将UIControl元素作为滚动视图的子视图并检测到触摸事件时,它最初会传递给UIScrollView。如果在一两分钟之后触摸事件中没有足够的移动,它会被传递到按钮。

答案 2 :(得分:0)

如果您继承NSButton并创建该类型的按钮并覆盖子类中的以下内容,则可以将事件传递回父视图,在您的情况下是滚动视图

以下内容将使按钮永远不会触发事件,而是所有内容都将由父视图处理:

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

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

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

如果您想让按钮处理其中一个事件,请使用

[super touchesEnded:touches withEvent:event];

答案 3 :(得分:0)

试试这个:

self.button.exclusiveTouch = YES

对我来说就像一个魅力!