两种方法"按住按钮"在Cocoa Touch

时间:2014-07-30 18:52:35

标签: ios objective-c cocoa-touch uibutton

我有两个按下按钮,彼此相邻。一个覆盖iOS屏幕的右半部分,另一个覆盖屏幕的左半部分。它们的代码是(左方法的坐标相关值相反):

- (IBAction)RightStart:(id)sender {//Touch Event is TOUCH DOWN

    RightTimer = [NSTimer scheduledTimerWithTimeInterval:RightSpeed target:self selector:@selector(RightMove) userInfo:nil repeats:YES] ;
    if(RightTimer == nil){
        RightTimer = [NSTimer scheduledTimerWithTimeInterval:RightSpeed target:self selector:@selector(RightMove) userInfo:nil repeats:YES] ;
    }
}

- (IBAction)RightStop:(id)sender {  //Touch Event is TOUCH UP INSIDE

    [RightTimer invalidate] ;
    RightTimer = nil ;
}

- (void)RightMove{
    Player.center = CGPointMake(Player.center.x + 1,Player.center.y) ;
    if(Player.center.x > 304){
        Player.center = CGPointMake(304, Player.center.y) ;
    }
}

当用户将手指(我的鼠标)放在其中一个按钮上并将其滑动到另一个按钮时,图像会移动到屏幕的一侧并停留在那里(因为有锁定所以它不能移动屏幕)。

从断点处看,当鼠标/手指从按钮上扫除而没有实际从屏幕上释放时,停止方法永远不会运行。当然后尝试向另一个方向移动时,向左移动,将其从侧面移开,向左移动1个像素,然后向右移动1个等等。因为向左按住会启动左计时器,右计时器也会运行,图像不动。

我应该怎样解决程序在按住按钮时手指没有按下按钮但是使用双功能按下按钮滑动按钮的问题?

1 个答案:

答案 0 :(得分:0)

为了解决这个问题,类似于@Abhishek Bedi所说的,创建一个与RightStop方法相同的新IBAction方法,但是使用touchDragExit操作。