如何在按钮边界外禁用TouchUpInside Action

时间:2016-06-06 12:19:37

标签: ios swift uibezierpath cashapelayer

这是我的Xib。我只是拖了一个UIButton并改变了它的背景颜色。

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

我想要的完美。但问题是这个按钮可以在其圆形区域外点击(根据按钮的实际形状)。我希望它只能作为圆形可点击。

我怎样才能做到这一点?感谢。

1 个答案:

答案 0 :(得分:6)

创建签名行动

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

按钮

使用此答案找出触摸位置 UIButton TouchUpInside Touch Location

使用

检查您的CGPath中是否包含该位置
- (IBAction)buttonPressed:(id)sender forEvent:(UIEvent*)event{
  //find location point using above answer link
  if([button.layer.mask containsPoint: location])
  {
   //proceed with the code
  }
} 

如果包含点,则返回bool。

即如果它包含点,你可以继续,否则你可以返回。

希望有所帮助:)