2016-12-16 3 views
0

Ich habe UIButton programmgesteuert erstellt, es Aussehen ist in Ordnung, aber wenn ich auf die Schaltfläche tippen gibt es keinen "Highlight" -Effekt, wenn Sie normalerweise tippen Sie auf. Wie füge ich das hinzu?Kein Highlight-Effekt auf Tippen auf uibutton

_payBtn = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [_payBtn setTitle:@" Оплатить " forState:UIControlStateNormal]; 
    [_payBtn setTitleColor:[UIColor lightGreen] forState:UIControlStateNormal]; 
    [_payBtn setContentMode:UIViewContentModeCenter]; 
    _payBtn.tintColor = [UIColor lightGreen]; 
    [[_payBtn layer] setBorderWidth:1.0f]; 
    [[_payBtn layer] setBorderColor:[UIColor lightGreen].CGColor]; 
    [_payBtn addTarget:self action:@selector(didTapPayBtn) forControlEvents:UIControlEventTouchUpInside]; 
    [self.payContainerView addSubview:_payBtn]; 
+0

Bitte akzeptieren Sie meine Antwort, wenn es für Sie funktioniert. thx – GeneCode

+0

Highlight-Effekt wie Info-Taste oder eine Standard-blaue Markierung? – Wolverine

+0

Bitte überprüfen Sie meine Ans und lassen Sie mich wissen, dass Sie Feedback geben. – vaibhav

Antwort

1

Sie Standard-Methoden verwenden, können eine Schaltfläche markieren:

[self.button showsTouchWhenHighlighted]; 

Wenn Sie irgendeine Art wollen von Touch-Effekt wie Einstellung Hintergrundfarbe fr om hervorgehoben normal Sie CABasicAnimation Klasse mit Schlüssel backgroundColor für für die Hintergrund Aussehen verwenden:

- (IBAction) didTapPayBtn:(UIButton *)sender{ 

    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"backgroundColor"]; 
    animation.fromValue = (id)[[UIColor lightGrayColor] CGColor]; 
    // animation.toValue = (id)[[UIColor lightGrayColor] CGColor]; // optional 
    animation.duration = 1.0f; // animation duration 
    // animation.autoreverses = YES; // optional 
    // animation.repeatCount = NSIntegerMax; // optional  
    [self.button.layer addAnimation:animation forKey:@"ColorPulse"]; 
} 

Wenn Sie den Effekt über Schaltfläche Schatten zeigen, müssen Sie wie durch Änderung der Schlüsselwert kann:

// inside viewDidLoad 
self.button.layer.shadowOpacity = 1.0f;' 

// inside didTapPayBtn action 
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"shadowColor"]; 
[self.button.layer addAnimation:animation forKey:@"shadow"]; 
+0

Ich frage mich, warum [self.button showsTouchWhenHighlighted]; nicht arbeiten. –

+0

dann können Sie es einfach verwenden wie Einstellung mit bool Wert '_payBtn.showsTouchWhenHighlighted = YES;', eigentlich habe ich dies als Animationsproblem genommen. – vaibhav

+0

Ihre benutzerdefinierte Animation funktioniert aber als Workaround, ich frage mich, warum Standardanimation deaktiviert. –

1

Ja können Sie verwenden

_payBtn.showsTouchWhenHighlighted = YES; 
+0

ist das Problem nicht gelöst. –

2

Versuchen Sie folgendes:

[_paybtn setHighlighted:YES]; 
[_paybtn sendActionsForControlEvents:UIControlEventTouchUpInside]; 
Verwandte Themen