はい、レコグナイザーの状態を見ることでこれを達成できますが、オブザーバーを使用する必要はありません。レコグナイザーが起動したときに呼び出されるジェスチャ レコグナイザーのデリゲートで、アクション メソッドを宣言する必要があります。このメソッドは、レコグナイザーの状態が変化するたびに自動的に呼び出されます。
タイマーを開始するには UIGestureRecognizerStateBegan の状態を探す必要があり、タイマーを一時停止するには UIGestureRecognizerStateEnded、UIGestureRecognizerStateFailed、および UIGestureRecognizerStateCancelled の状態を探す必要があります。
ジェスチャを Interface Builder のアクションに接続するだけです。
-(IBAction)longPressBegan:(UILongPressGestureRecognizer *)recognizer
{
if (recognizer.state == UIGestureRecognizerStateBegan)
{
// Long press detected, start the timer
}
else
{
if (recognizer.state == UIGestureRecognizerStateCancelled
|| recognizer.state == UIGestureRecognizerStateFailed
|| recognizer.state == UIGestureRecognizerStateEnded)
{
// Long press ended, stop the timer
}
}
}