如何在 iOS 应用中与 UIButton 的特定区域进行交互

Posted

技术标签:

【中文标题】如何在 iOS 应用中与 UIButton 的特定区域进行交互【英文标题】:How to interact with specific area of UIButton in iOS app 【发布时间】:2013-11-06 08:02:42 【问题描述】:

我必须在点击按钮的特定区域时执行操作。实际上在只有粉红色可见的区域。不在那个区域之外。请查看随附的图片以及此消息,如果我有任何不清楚的地方,请告诉我。

【问题讨论】:

整个按钮都是粉红色的。你说的是哪个粉红色区域? 我认为这是关于分析图像像素的,大多数人都没有理解它...... 【参考方案1】:

您需要创建自定义 UIButton 类并添加方法:

-(BOOL) pointInside:(CGPoint)point withEvent:(UIEvent *)event

    if(![super pointInside:point withEvent:event]) return NO;

    return [bezierPath containsPoint:point];

bazierPath 可见区域你的按钮。看这个链接docs

【讨论】:

【参考方案2】:

您可以添加自定义选择器,然后在那里获得接触点。然后检查该点是否在您的特定区域内。

[pinkButton addTarget:self action:@selector(buttonTouched:withEvent:) forControlEvents: UIControlEventTouchDown];
//Define the area here or get the exact frame if it is already a UIView
CGRect frameOfSpecificArea = CGRectMake(10, 20, 30, 40);
- (void)buttonTouched:(UIButton *)sender withEvent:event 
    UITouch *touch = [[event allTouches] anyObject];
    CGPoint tapPoint = [touch locationInView:sender];
    NSLog(@"Pink Button touched x : %f y : %f", tapPoint.x, tapPoint.y);
    BOOL pointIsInside = CGRectContainsPoint(frameOfSpecificArea, tapPoint);
    if(pointIsInside) 
       NSLog(@"Yeah, i'm a great ios-Developer, i can check if a point is inside a CGRect!");
    

【讨论】:

您已经提供了矩形框架。但我需要检查用户是否在粉红色区域内点击过,并且它的形状不是 Ractangular【参考方案3】:

您应该继承 UIButton 并覆盖它的 - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event 区域几何的基础或访问按钮的图像并检查某个点的颜色。

看看这个:OBShapedButton

【讨论】:

UIButton 没有这个方法 如何识别点是否在粉红色区域内?您将如何计算或找到该区域? 在答案中添加您的最后一条评论,以便我接受。我不能接受你目前的回答。

以上是关于如何在 iOS 应用中与 UIButton 的特定区域进行交互的主要内容,如果未能解决你的问题,请参考以下文章

如何将 testthat 测试应用于我的包中与特定命名模式匹配的所有函数?

如何删除多个 UIButton 或动态创建的特定 UIButton?

如何在 iOS 中像 UITabBarItem 一样设计 UIButton?

如何在 Swift 中扩展特定 UIButton 的点击区域?

隐藏 UIButton 直到达到特定的点数

Xcode 7.3 如何将我现有的 iPhone 应用程序转换为通用应用程序,以便在 iOS 中与 iPad 一起使用