1

Is it possible to use the touchesMoved function with buttons instead of UIImageViews?

4

2 回答 2

1

是的。

在您的 .h 文件中

IBOutlet UIButton *aButton;

在您的 .m 文件中

    -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [[event touchesForView:self.view] anyObject];

    CGPoint location = [touch locationInView:touch.view];

    if(CGRectContainsPoint(p1.frame, location)) 
    {
        if (!p1.isHighlighted){
            [self pP01];
            [p1 setHighlighted:YES];
    }
}else {
        [p1 setHighlighted:NO];
    }
    //
    if(CGRectContainsPoint(p2.frame, location)) 
    {
        if (!p2.isHighlighted){
            [self pP02];
            [p2 setHighlighted:YES];
        }
    }else {
        [p2 setHighlighted:NO];
    }
    if(CGRectContainsPoint(p3.frame, location))
    {
        if (!p3.isHighlighted){
            [self pP03];
            [p3 setHighlighted:YES];
        }
    }else {
        [p3 setHighlighted:NO];
    }
}

最后,在 Interface Builder 中,将您的按钮连接到“aButton”并为您的按钮关闭“启用用户交互”。这很重要,因为它允许 touchesMoved 处理它。

我已经调整了上面的代码来检查按钮突出显示的状态。这是为了在您在该区域内拖动手指时阻止它多次触发按钮。

要让您的“钢琴键”在您点击它们时起作用,请使用-(void)touchesBegan

要将按钮高亮状态设置回= NO;,请使用-(void)touchesEnded

我不得不找出你所追求的完全相同的东西。我想不通Touch Drag Enter

因此,为避免有关该主题的多个帖子,请查看我的问题和答案。

问题 1

问题2

于 2010-02-10T08:12:47.283 回答
0

您当然可以发现当前正在触摸事件的“视图”正在拖动,即使它是一个按钮。您还可以对 Interface Builder 中的按钮使用“触摸拖动输入”连接。选择按钮后按 cmd+2 查看连接选项卡。

于 2010-02-07T22:29:21.580 回答