如何在触摸释放时使 IBAction 方法无效
Posted
技术标签:
【中文标题】如何在触摸释放时使 IBAction 方法无效【英文标题】:How to invalidate an IBAction method on touch release 【发布时间】:2016-03-06 22:20:05 【问题描述】:这是我用来尝试在触摸释放时使 IBActions“TouchEndedLeft”和“TouchEndedRight”无效的代码
-(IBAction)LeftArrowTapped:(id)sender;
[self heroMovementTimerMethodLeft];
-(IBAction)RightArrowTapped:(id)sender;
[self heroMovementTimerMethodRight];
-(void)heroMovementLeft
hero.center = CGPointMake(hero.center.x -.5, hero.center.y );
-(void)heroMovementRight
hero.center = CGPointMake(hero.center.x +.5, hero.center.y );
-(void)heroMovementTimerMethodLeft
heroMovementTimerLeft = [NSTimer
scheduledTimerWithTimeInterval:speedOfhero
target:self selector:@selector(heroMovementLeft) userInfo:nil
repeats:YES];
-(void)heroMovementTimerMethodRight
heroMovementTimerRight = [NSTimer
scheduledTimerWithTimeInterval:speedOfhero
target:self selector:@selector(heroMovementRight) userInfo:nil
repeats:YES];
这是我尝试使用触摸取消 IBAction 样式使方法无效的方法
-(IBAction)TouchendedLeft:(id)sender;
[heroMovementTimerLeft invalidate];
-(IBAction)TouchendedRight:(id)sender;
[heroMovementTimerRight invalidate];
当您松开手指时,使 IBAction 方法无效的最佳方法是什么?我尝试过在外部进行触摸取消修饰并在 IBAction 样式内部进行修饰,但似乎都不起作用。我使用了错误的 IBAction 风格?错误的方法类型?还是我执行代码错误?
【问题讨论】:
【参考方案1】:如果您制作两个 IBAction,每个按钮对应一个所需的事件,您应该能够捕获 touchdown: 事件和 touchUpInside: 事件。最初的按下应该与 touchdown: 事件和使用 touchUpInside: 事件的按钮释放相关联。听起来您正在尝试制作游戏,您是否研究过 SpriteKit(2D) 或 SceneKit (3D) 框架?
【讨论】:
成功了!太感谢了!是的,我正在制作一款游戏,我对 sprite kit 2d 进行了一些研究,用于模拟摇杆,我将为我的角色使用 cocos 2dx以上是关于如何在触摸释放时使 IBAction 方法无效的主要内容,如果未能解决你的问题,请参考以下文章