2016-11-09 16 views
0

私はobjectiveCですべてのジェスチャーを使用しています。LongGestureRecogizerに問題がありますか?

私の必要性は: - 私たちはUIButtonを保持すると、音声録音が開始されます。 UIButtonをリリースすると、音声録音が停止します。

私はこのような使用LongGesture持つ: -

-(void)handLongPress:(UILongPressGestureRecognizer *)recognizer { 

    if (recognizer.state == UIGestureRecognizerStateEnded) { 
     [record stop]; 

     AVAudioSession *audioSession = [AVAudioSession sharedInstance]; 
     [audioSession setActive:NO error:nil]; 

     [tbl reloadData]; 
    } 
    else if (recognizer.state == UIGestureRecognizerStateBegan){ 

     if (player.playing) { 
      [player stop]; 
     } 

     if (!record.recording) { 
      [self saveMusic]; 

      AVAudioSession *session = [AVAudioSession sharedInstance]; 
      [session setActive:YES error:nil]; 

      // Start recording 
      [record record]; 
      // [recordPauseButton setTitle:@"Pause" forState:UIControlStateNormal]; 

     } else { 

      // Pause recording 
      [record pause]; 
      // [recordPauseButton setTitle:@"Record" forState:UIControlStateNormal]; 
     }   
    }  
} 

をしかし、我々はボタンを押したときに、この場合には、それが機能していません。ボタンを離すと音声が自動的に開始/停止します(音声は0.1秒間のみ録音されます)

私を助けることができますか?

+0

ボタンをクリックすると長押しのジェスチャーを処理していますか? –

答えて

0

ロングジェスチャーの代わりにUIControlEventsを使用します。

コントロールの現在のタッチをキャンセルするシステムイベントです。 UIControlEventTouchDown

コントロールの境界のすぐ外側で指をドラッグするイベントです。 UIControlEventTouchUpInside