私のアプリでは、UILongPressGestureRecognizerはボタンが離されるまで毎秒連続してメッセージを送信したいと思っています。残念ながら、「連続」のような状態はないので、メッセージを制御するために「開始」と「終了」を使用する必要があります。ここに私のコードはありますが、私はターミナルに両方のログを取得しますが、whileループは停止していませんか?iOS - UILongPressGestureRecognizer
- (void)longPress:(UILongPressGestureRecognizer*)gesture {
BOOL loop = NO;
if (gesture.state == UIGestureRecognizerStateBegan) {
NSLog(@"Long press detected.");
loop = YES;
while (loop){
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]];
// here I want to do my stuff every second
}
} else if (gesture.state == UIGestureRecognizerStateEnded) {
NSLog(@"Long press Ended");
loop = NO;
}
}
誰でもお手伝いできますか?
提案 - タイマーを使用しています。また、ローカル変数の代わりにインスタンス変数を使用します。 – rmaddy
UILongPressGestureRecognizerをサブクラス化することを検討してください。 – matt