2016-06-06 15 views
1

Dies ist mein Xib. Ich habe gerade eine UIButton gezogen und die Hintergrundfarbe geändert.So deaktivieren Sie TouchUpInside Aktion außerhalb der Grenze der Schaltfläche

enter image description here

habe ich einen Halbkreis Schicht mit diesem Code

let circlePath = UIBezierPath.init(arcCenter: CGPointMake(mybutton.bounds.size.width/4, 0), radius: mybutton.bounds.size.height, startAngle: 0.0, endAngle: CGFloat(M_PI), clockwise: true) 
    let circleShape = CAShapeLayer() 
    circleShape.path = circlePath.CGPath 
    mybutton.layer.mask = circleShape 

und dies ist meine Ausgabe.

enter image description here

Es ist perfekt, wie ich es will. Das Problem ist jedoch, dass diese Schaltfläche außerhalb ihres abgerundeten Bereichs anklickbar ist (gemäß der tatsächlichen Form des Buttons). Ich möchte, dass es nur als runde Form anklickbar ist.

Wie kann ich das erreichen? Vielen Dank.

+0

sanmans Ansatz würde funktionieren. Sie können auch versuchen, hitTest zu verwenden: – Stephenye

Antwort

5

Wirkung Signatur erstellen

- (IBAction)buttonPressed:(id)sender forEvent:(UIEvent*)event{ 
//your code 
} 

für den Button

diese Antwort mit Touch Lage Finden Sie heraus, UIButton TouchUpInside Touch Location

Überprüfen Sie, ob die Lage in Ihrem CGPath enthalten ist, mit

- (IBAction)buttonPressed:(id)sender forEvent:(UIEvent*)event{ 
    //find location point using above answer link 
    if([button.layer.mask containsPoint: location]) 
    { 
    //proceed with the code 
    } 
    else 
    return; 
} 

Es gibt ein bool zurück, wenn es einen Punkt enthält.

Wenn es einen Punkt enthält, können Sie fortfahren, andernfalls können Sie zurückkehren.

Hoffe es hilft :)

Verwandte Themen