iOS超出父控件范围无法点击问题解决

 更新时间:2023年06月26日 17:24:29   作者:萤火驻守心间  
这篇文章主要介绍了iOS超出父控件范围无法点击问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

场景

橙色view添加在蓝色view上,满足点击超出蓝色view部分可以响应事件

实现思路

重写底部蓝色view的hitTest方法,从最上层依次遍历子控件,判断触摸点是否在子控件上,在的话就返回子控件的hitTest方法,不在就返回self

完整代码

#import "ViewController.h"
#import "BotView.h"
@interface ViewController ()
@property(strong, nonatomic) BotView *botView;
@property(strong, nonatomic) UIView *topView;
@end
@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor whiteColor];
    // Do any additional setup after loading the view.
    self.botView = [BotView new];
    self.topView = [UIView new];
    [self.view addSubview:self.botView];
    [self.botView addSubview:self.topView];
    self.botView.frame = CGRectMake(100, 100, 100, 100);
    self.topView.frame = CGRectMake(0, 0, 50, 200);
    self.botView.backgroundColor = [UIColor linkColor];
    self.topView.backgroundColor = [UIColor orangeColor];
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(topViewClick:)];
    [self.topView addGestureRecognizer:tap];
}
- (void)topViewClick:(UITapGestureRecognizer *)tap {
    NSLog(@"点击了顶部view");
}
@end

botView代码

#import "BotView.h"
@implementation BotView
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
    int count = (int)self.subviews.count;
    for (int i=count-1; i>=0; i--) {
        UIView *subView = self.subviews[i];
        //点击事件作用在子控件上面,返回点击点
        CGPoint isPoint = [self convertPoint:point toView:subView];
        UIView *subv = [subView hitTest:isPoint withEvent:event];
        if (subv) {
            return subv;
        }
    }
    return self;
}
@end

以上就是iOS超出父控件范围无法点击问题解决的详细内容,更多关于iOS父控件无法点击的资料请关注脚本之家其它相关文章!

相关文章

  • iOS实现自定义起始时间选择器视图

    iOS实现自定义起始时间选择器视图

    本篇文章主要介绍了iOS实现自定义起始时间选择器视图,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Objective-C中的语法糖示例详解

    Objective-C中的语法糖示例详解

    开发过程中我特别喜欢用语法糖,原因很简单,懒得看到一堆长长的代码,但语法糖简单却不那么简单,下面这篇文章主要给大家介绍了关于Objective-C中语法糖的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
    2018-01-01
  • iOS开发笔记之键盘、静态库、动画和Crash定位

    iOS开发笔记之键盘、静态库、动画和Crash定位

    最近在学习iOS开发,进行了一些实战,所以下面这篇文章主要给大家介绍了关于iOS开发笔记之键盘、静态库、动画和Crash定位的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-04-04
  • iOS开发--仿新闻首页效果WMPageController的使用详解

    iOS开发--仿新闻首页效果WMPageController的使用详解

    这篇文章主要介绍了iOS开发--仿新闻首页效果WMPageController的使用详解,详解的介绍了iOS开发中第三方库WMPageController控件的使用方法,有需要的可以了解下。
    2016-11-11
  • iOS 对当前webView进行截屏的方法

    iOS 对当前webView进行截屏的方法

    下面小编就为大家带来一篇iOS 对当前webView进行截屏的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • iOS10 Xcode8开发适配问题及解决方案

    iOS10 Xcode8开发适配问题及解决方案

    前段时间升级了Xcode8,整体来说对OC的影响不大,但是还是会有这样那样的问题,下面小编给大家总结了遇到的适配问题及解决方案,对xcode8 ios10适配问题感兴趣的朋友一起看看吧
    2016-11-11
  • 总结IOS界面间跳转的几种方法

    总结IOS界面间跳转的几种方法

    前段时间被问到界面间的跳转有几种方式?想不到说的竟有点含糊其辞,于是就想总结一下。有句话说的好,“前人种树,后人乘凉”,目前作为一个乘凉者,我也希望能种一些树木,为代码世界营造一份清新。好了,话不多说,进入主题。
    2016-08-08
  • IOS 开发APP之关于时间处理详细介绍

    IOS 开发APP之关于时间处理详细介绍

    这篇文章主要介绍了IOS 开发APP之关于时间处理详细介绍的相关资料,开发APP 不仅需要对API的调用还需要对时间相关的各种API之间的差别,再因场景而异去设计相应的机制,需要的朋友可以参考下
    2016-12-12
  • iOS第三方框架二维码生成与扫描

    iOS第三方框架二维码生成与扫描

    这篇文章主要为大家详细介绍了iOS第三方框架二维码生成与扫描,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • swift 常用高阶函数分享

    swift 常用高阶函数分享

    Swift是一门面向协议的语言,在使用Swift时我们已经充分享受到了面向协议编程带给我们的便利,但是Swift相比Obj-C还有一个更重要的优点,那就是对函数式编程提供了很好的支持,其中Swift提供了map,filter,reduce这三个高阶函数Higher Order function作为对容器的支持
    2017-12-12

最新评论