2016-06-06 6 views
1

이것은 내 XIB입니다. 방금 UIButton을 드래그하여 배경색을 변경했습니다. 버튼 경계 밖에서 TouchUpInside 동작을 비활성화하는 방법

enter image description here

는이 코드

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 

를 사용하여 세미 원 레이어를 생성하고이 내 출력됩니다.

enter image description here

완벽한

은 내가 원하는대로. 그러나 문제는이 버튼이 둥근 영역 밖에서 클릭 할 수 있다는 것입니다 (버튼의 실제 모양대로). 둥근 모양으로 만 클릭 할 수 있기를 원합니다.

어떻게하면됩니까? 감사.

+0

sanman의 접근 방식이 효과적입니다. 당신은 또한 hitTest를 사용하려고 시도 할 수있다 : – Stephenye

답변

5

당신의 버튼에 대한 서명

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

의 조치를 만들기

그 위치가

- (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; 
} 
를 사용하여 CGPath에 포함되는 경우이 답변을 UIButton TouchUpInside Touch Location

확인을 사용하여 터치 위치를 찾아

점이 포함되어 있으면 bool을 반환합니다.

즉 포인트가 포함 된 경우 계속 진행할 수 있습니다. 그렇지 않으면 되돌릴 수 있습니다.

도움이 되길 바랍니다.