UIButton
イベントに対して異なるコードを実行するインスタンスがいくつかUIControlEventTouchDown
ありUIControlEventTouchUpInside
ます。現時点では、ユーザーがタッチダウンした後、UIButton
タッチアップする前に指をの境界からドラッグすると、TouchUpInside
コードが実行されないため、次のコードがTouchDown
クラッシュするという問題が発生しています。
これをエラー防止する方法が必要です。これにより、aの後、指がa)ボタンの上に持ち上げられた場合、b)ボタンからドラッグされた場合、またはc)他の方法でキャンセルされた場合TouchDown
に、コードが実行されます。TouchUpInside
a)はによって解決され、との両方をUIControlEventTouchUpInside
試しましたが、状況b)またはc)を解決できません。UIControlEventTouchDragExit
UIControlEventTouchUpOutside
これをどのように処理できるか考えていますか?これが私のコードです:
[newBall.button addTarget: self action: @selector(buttonDown:) forControlEvents: UIControlEventTouchDown];
[newBall.button addTarget: self action: @selector(buttonUp:) forControlEvents: UIControlEventTouchUpInside];
- (void) buttonDown: (id) sender
{
NSLog(@"Finger down on button %d!", [sender tag]);
int senderTag = [sender tag];
for (CBBall *i in balls) {
int currentTag = [i.button tag];
if (currentTag == senderTag) {
i.body -> f = cpvzero;
[i replaceDynamicBall: i withStaticOneAtLocation: cpBodyGetPos(i.body)];
[i setIsBeingTouched: YES];
}
}
}
- (void) buttonUp: (id) sender
{
NSLog(@"Finger up on button %d!", [sender tag]);
int senderTag = [sender tag];
for (CBBall *i in balls) {
int currentTag = [i.button tag];
if (currentTag == senderTag) {
[i replaceStaticBall: i withDynamicOneAtLocation: cpBodyGetPos(i.body)];
[i setIsBeingTouched: NO];
}
}
}