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

简介: iOS超出父控件范围无法点击问题

image.png
场景:橙色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
相关文章
|
5月前
|
iOS开发
iOS超出父控件范围无法点击问题
iOS超出父控件范围无法点击问题
151 58
vue--ios手机input点击手机输入键盘顶起页面解决方案
vue--ios手机input点击手机输入键盘顶起页面解决方案
|
前端开发 JavaScript Android开发
【前端】IOS微信浏览器点击右上角遮罩实现
现在有一个需求,通过公众号或者链接,下载app应用,大家都知道,安卓和ios下载对应的版本都不一样。并且,ios 微信浏览器不支持应用下载,需要实现一个遮罩功能,提示用户通过浏览器下载,效果如下:
242 0
【前端】IOS微信浏览器点击右上角遮罩实现
|
移动开发 JavaScript Android开发
iOS12网页视频播放点击全屏按钮会导致闪退
iOS12网页视频播放点击全屏按钮会导致闪退
346 0
|
开发工具 iOS开发 git
iOS开发 - 类似美团选商品页,从按钮上往上滑动,tableview依然响应,点击按钮,按钮也可响应
iOS开发 - 类似美团选商品页,从按钮上往上滑动,tableview依然响应,点击按钮,按钮也可响应
234 0
iOS开发 - 类似美团选商品页,从按钮上往上滑动,tableview依然响应,点击按钮,按钮也可响应
|
API iOS开发 Perl
ios UIButton点击快捷回调
ios UIButton点击快捷回调
|
API iOS开发 Perl
iOS Button连按处理防止按钮连续点击
iOS Button连按处理防止按钮连续点击
|
iOS开发
iOS开发 --重写UISearchBar的时候,点击取消searchbar会变深色,一闪而过
iOS开发 --重写UISearchBar的时候,点击取消searchbar会变深色,一闪而过
138 0
|
iOS开发
iOS开发 - 点击tabbar某一个item,直接push跳转进入需要的页面,而不是切换tab
iOS开发 - 点击tabbar某一个item,直接push跳转进入需要的页面,而不是切换tab
469 0
|
iOS开发
iOS中CollectionView由于多次点击造成错误的解决方案
iOS中CollectionCiew由于多次点击,会给程序造成错误。 这个时候,我们可以用过手势类来进行判断和过滤。 但是,有一个快捷的解决方法,那就是给用户响应增加延时操作。 具体代码如下: [collectionView setUserInteractionEnabled:NO]; ...
915 0

热门文章

最新文章

  • 1
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    23
  • 2
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    21
  • 3
    uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
    141
  • 4
    【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
    223
  • 5
    app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
    87
  • 6
    深入探索iOS开发中的SwiftUI框架
    143
  • 7
    ios样式开关按钮jQuery插件
    58
  • 8
    Android与iOS生态差异深度剖析:技术架构、开发体验与市场影响####
    74
  • 9
    深入探索iOS与Android操作系统的安全性差异
    102
  • 10
    安卓与iOS开发中的跨平台策略:一次编码,多平台部署
    174