我想要达到一个相当简单的效果。一个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,那么也没有任何反应。
答案 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%