4

我想达到一个相当简单的效果。滚动视图和其上方的静态按钮。到目前为止没有问题。不幸的是,如果我想“通过”按钮滚动视图,就会出现问题。所以开始在按钮内部拖动会影响按钮,而不是滚动视图。

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

非常感谢!

我认为这种方法行不通,因为 touchesBegan 在 UIScrollView 中已被弃用……(此信息是真的吗?)

不是解决方案:-)

@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。有任何想法吗?

如果我的视图控制器(即 nextResponder)将触摸传递给滚动视图,则也不会发生任何事情。

4

5 回答 5

12

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

由于按钮不是滚动视图的子视图,它不会随背景移动(我想你的意思是static)。

于 2011-04-04T11:39:45.043 回答
1

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

尝试将按钮的 ExclusiveTouch 设置NO。不确定,但也可能 enableMultitouch 为 YES。

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

于 2011-04-04T14:54:46.307 回答
1

很难理解你想要达到的目标。是否要滚动按钮?

所以开始在按钮内部拖动会影响按钮,而不是滚动视图。

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

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

于 2011-04-10T21:29:48.963 回答
0

将整个 Scroll View 向下移动 Button 的高度,并将其高度缩小相同的量。然后将您的 Button 放在 Scroll View 上方 - 所以它不是 Scroll View 的子项。

于 2011-03-31T08:42:43.700 回答
0

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

同样的方法

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

如果您触摸 scoolview 的空白区域,则调用 UIScrollView 的委托方法。

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

于 2011-04-11T10:40:56.253 回答