我有横向UIScrollView
这是从UIScrollView
延伸和我加UIButtons
水平。我只能滚动出按钮区域,但如果我想滚动任何按钮是火灾UIControlEventTouchUpInside
事件。我不想要这个。如果我点击并且想滚动,如果我滚动,我想点击UIControlEventTouchUpInside
动作。从uibutton传递滚动事件到uiscrollview
凭什么我通过滚动事件从UIButton
到UIScrollView
?
我有横向UIScrollView
这是从UIScrollView
延伸和我加UIButtons
水平。我只能滚动出按钮区域,但如果我想滚动任何按钮是火灾UIControlEventTouchUpInside
事件。我不想要这个。如果我点击并且想滚动,如果我滚动,我想点击UIControlEventTouchUpInside
动作。从uibutton传递滚动事件到uiscrollview
凭什么我通过滚动事件从UIButton
到UIScrollView
?
如果你继承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];
我试过了,但没有奏效。原因是UIScrollView不响应touchesBegan,touchesMoved和touchesEnded事件。我将UIScrollView分类以确认它正在接收这些事件,但没有对它们做任何事情。作为替代通过触摸事件,你可以算出touchesMoved的位置变化而改变滚动视图contentOffset财产,但不给你任何正常的滚动行为的平滑运动或惯性。 – arlomedia 2011-07-27 21:21:07
该功能已经内置的。当你有一个UIControl元素作为滚动视图的子视图和触摸事件被检测到时,它最初传递给UIScrollView的。如果在一两秒之后触摸事件中没有足够的移动,它会传递给按钮。
我想我的按钮漂浮在一个固定的位置,滚动内容上面,而不是与内容移动,好像他们是滚动视图的子视图他们会做。但是我无法使用任何其他方法正确流动触摸事件,所以我尝试了这种方法,并将所有按钮分组到一个视图中,该视图是滚动视图的子视图。当scrollViewDidScroll委托方法检测到滚动内容时,通过设置其frame.origin.x以匹配滚动视图的contentOffset.x,我将该视图保留在可见内容的上方。这样可行! – arlomedia 2011-07-28 00:25:35
试试这个:
self.button.exclusiveTouch = YES
工作就像一个魅力对我来说!
子类的UIScrollView,在- touchesShouldCancelInContentView:
方法返回YES。
非常感谢! :] – Jerome 2016-10-12 23:49:11
,如果你创建了一个简单的代码示例来说明你在做什么,因为在添加一个UIButton到的UIScrollView的简单的情况下,你甚至可以拖动滚动视图现在的位置,如果你在开始触摸事件这将有助于按钮。 – Yetanotherjosh 2011-04-12 08:57:30