2017-01-04 1 views
1

Ich möchte Voice Recorder App machen. Die Aufnahme sollte starten, wenn die lange Berührung beginnt und die Aufnahme beendet werden muss, wenn der Benutzer die Geste auf der Taste stoppt.Button Ereignis, wenn Ende berühren

UIGestureRecognizer *longGesture=[[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(startrecording)]; 

Wie kann ich damit umgehen, wenn der Benutzer die Schaltfläche verlässt?

+1

Willkommen bei Stackoverflow. Sehen Sie sich an, um herauszufinden, wie Sie die Frage zu SO richtig stellen: http://stackoverflow.com/help/how-to-ask –

Antwort

1

in viewDidLoad Methode

UILongPressGestureRecognizer *longPressOnButton = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressOnButton:)]; 
longPressOnButton.delegate = self; 
btn.userInteractionEnabled = YES; 
[btn addGestureRecognizer:longPressOnButton]; 



- (void)longPressOnButton:(UILongPressGestureRecognizer*)gesture 
{ 
    // When you start touch the button 
    if (gesture.state == UIGestureRecognizerStateBegan) 
    { 
     //start recording 
    } 
    // When you stop touch the button 
    if (gesture.state == UIGestureRecognizerStateEnded) 
    { 
     //end recording 
    } 
} 

Sie können auch versuchen, oder verwenden Sie das Touch Konzept

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)e { 
    // show touch-began state 
} 
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)e { 

} 
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)e { 
    UITouch *touch = [touches anyObject]; 
    ..... 
} 

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)e { 

} 
0

Wie user3182143 sagte ein UILongPressGestureRecorgnizer verwendet, wird Ihr Problem lösen, aber wenn Sie interessiert sind, gibt es eine andere Weg mit einem UIButton. Keine Notwendigkeit, eine UILongPressGestureRecorgnizer hinzuzufügen!

Ziehen Sie in Ihrem Storyboard eine IBAction für eine UIButton. Und während Sie seinen Namen hinzufügen, ändern Sie event zu Touch Down.

Ziehen Sie jetzt einen weiteren IBAction für denselben UIButton und ändern Sie das Ereignis während der Änderung seines Namens in(wenn es das nicht schon ist).

- (IBAction)touchDownButtonAction:(UIButton *)sender { 
    NSLog(@"Start"); 
} 

- (IBAction)touchUpInsideButtonAction:(UIButton *)sender { 
    NSLog(@"End"); 
} 

Behandeln Sie Ihre Aufnahme basierend auf den Aktionen! Hier

ist ein Screenshot für alle Fälle:

enter image description here

Verwandte Themen