2016-06-30 11 views
0

Ich habe eine benutzerdefinierte UIButton mit einem blauen Hintergrund. Wenn ich meinen Finger über die UIButton ziehe, muss ich eine rote Hintergrundfarbe ausfüllen. Wenn ich meinen Finger zurück ziehe, sollte die rote Farbe verschwinden.Füllen Hintergrundfarbe auf UIButton beim Ziehen

Ich versuchte eine Implementierung mit UIPanGestureRecognizer auf UIGestureRecognizerStateEnded Zustand. Ohne eine weitere Ansicht über UIButton hinzuzufügen, konnte ich im Hintergrund der Schaltfläche keine rote Farbe erkennen.

Gibt es eine andere Möglichkeit, dies zu implementieren?

Antwort

0

hinzufügen Ziele:

[button addTarget: self 
      action: @selector(buttonTouchStarted:withEvent:) 
forControlEvents: UIControlEventTouchDragEnter | UIControlEventTouchDown]; 
[button addTarget: self 
      action: @selector(buttonTouchEnded:withEvent:) 
forControlEvents: UIControlEventTouchDragExit | UIControlEventTouchUpInside | UIControlEventTouchCancel]; 

und eine rote Überlagerungsansicht in den Event-Handler Steuerung neu zu positionieren:

- (void) buttonTouchStarted:(UIButton *)button withEvent:(UIEvent *)event { 
    CGPoint location = [[event touchesForView:button].anyObject locationInView:button]; 

    UIView *redView = [button viewWithTag:42]; 
    if (! redView) { 
     // Install a red overlay 
     redView = [[UIView alloc] initWithFrame:CGRectZero]; 
     redView.backgroundColor = [UIColor redColor]; 
     redView.alpha = 0.5f; 
     redView.tag = 42; 

     // IMPORTANT: We don't want this overlay view to block touches 
     redView.userInteractionEnabled = NO; 

     [button addSubview:redView]; 
    } 

    CGRect frame = button.bounds; 
    frame.size.width = location.x; 
    redView.frame = frame; 
} 

- (void) buttonTouchEnded:(UIButton *)button withEvent:(UIEvent *)event { 
    UIView *redView = [button viewWithTag:42]; 
    if (redView) { 
     [redView removeFromSuperview]; 
    } 
} 
+0

Danke für Ihre Zeit. Die Hintergrundfarbe bei Berührungsereignissen wird nicht geändert. Die Hintergrundfarbe sollte während des Ziehens eine Live-Zeichnung sein. Es ähnelt dem Auswählen eines Wortes durch den Cursor. Entschuldigung, wenn meine Frage dich irreführt. – selva

+0

Ich habe meine Antwort bearbeitet. Ist es das, was du versuchst? Wenn nicht, könnte es hilfreich sein, wenn Sie Ihre Frage bearbeiten. –

0

Verwenden Sie die Sent Event properties des UIButton für die Veränderung der Widerstandszeit Farbe TouchDragEnter verwenden und für nehmen Sie die gleiche Farbe zurück TouchCancel.

kann es Ihnen helfen?

Verwandte Themen