TouchesMoved with Button?

时间:2010-02-07 22:23:09

标签: iphone button uiimageview touchesmoved

是否可以将touchesMoved功能与按钮而不是UIImageView一起使用?

2 个答案:

答案 0 :(得分: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

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

question 1

question 2

答案 1 :(得分:0)

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