奇怪的现象:touchesBegan: 与UITapGestureRecognizer手势没有人响应 以及set方法的妙用

奇怪的现象:touchesBegan: 与UITapGestureRecognizer手势没有人响应 以及set方法的妙用本打算实现一个点击按钮弹出一个landKindView然后点击屏幕其他部分时移除这个VIew,没想到的是,出了诸多不可思议的问题。在给这个控制器的View添加手势时,然后居然拦截不到,touchesbegin方法,然后又试了下添加tapGesture,依旧是没有反应。然后我试着在touchesBegin方法中 实现[supertouchesBegins….];依旧是没有任

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

本打算实现一个点击按钮 弹出 一个landKindView 然后点击屏幕其他部分时移除这个VIew,没想到的是,出了诸多不可思议的问题。
在给这个控制器的View添加手势时,然后居然拦截不到,touchesbegin方法,然后又试了下添加tapGesture,依旧是没有反应 。
然后我试着 在touchesBegin方法中 实现 [super touchesBegins....];依旧是没有任何反应。无奈,又尝试着在View视图上添加一个landBGView,来承载我想要显示的landKindView。
设置 landBGView 为控制器的View的尺寸,然会添加,到控制器的VIew上。然后在landBGView上添加手势,但是仍旧是没有反应,郁闷至极。。。

今天再次尝试了一下,居然就可以了(可能是自己修改了某些东西)。
<span style="font-family: Arial, Helvetica, sans-serif;">可能的原因:</span>
1. View的userEnable 的属性查看是否开启 (尤其是父控件)
2. View的叠放顺序 查看是否被其他的控件挡住
<img src="https://img-blog.csdn.net/20160115104129525?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="200" height="40" alt="" /><img src="https://img-blog.csdn.net/20160115104156814?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="200" height="150" alt="" />
3.查看是否添加事件监听
4.查看是否被添加的手势监听拦截
5.对父控件进行上述可能存在的问题检查
(暂时想到这么多)
<span style="white-space:pre">	</span>

但是也在尝试做一些其他的东西。重写set方法来实现某些代码的简化,
主要是操作View的显示与隐藏(或者是刷新操作,网络请求之类的均可),主要是为了操作方便,集中处理细节问题
具体如下:
//某按钮的 控制显示子View
- (void)categoryBtnClick
{
    self.categoryIsShowing = !self.categoryIsShowing ;
}

// 重写set方法
- (void)setCategoryIsShowing:(BOOL)categoryIsShowing
{
    if (categoryIsShowing == YES) {
        _categoryIsShowing =YES;
        
        [self.view addSubview: self.landBGView];
    } else {
        
        _categoryIsShowing =NO;
        [self.landBGView removeFromSuperview];
    }
}
//这是背景view
- (UIView *)landBGView
{
    if (!_landBGView) {
        
        self.landBGView = [[UIViewalloc] initWithFrame:self.view.bounds];
//        self.landBGView.backgroundColor = [UIColor lightGrayColor];
        
        [self.landBGViewaddSubview:self.landKindView];
        
        UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizeralloc] initWithTarget:selfaction:@selector(toucheslandBGView)];
        [self.landBGView addGestureRecognizer:tapGesture];
        
    }
    return_landBGView;
}

//
- (UIView *)landKindView
{
    if (!_landKindView) {
        NSArray *landKinds  = [NSArrayarrayWithObjects:@"AAA",@"BBB",@"CCC",nil];
        
        CGFloat detailViewX = [UIScreenmainScreen].bounds.size.width -100;
        //    CGFloat detailViewX = 200;
        CGFloat detailViewY = 64;
        CGFloat detailViewW = 100;
        CGFloat detailViewH = 44 * 3;
        UIView  *landKindView = [[UIViewalloc] initWithFrame:CGRectMake(detailViewX, detailViewY, detailViewW, detailViewH) ];
        landKindView.backgroundColor = [UIColorlightGrayColor];

        CGFloat btnY = 0;
        CGFloat btnH = 44;
        for (int i =0; i < 3; i++) {
            UIButton *btn =  [[UIButtonalloc] initWithFrame:CGRectMake(0, btnY + i*btnH, detailViewW, btnH)];
            btn.tag = i;
            forState:UIControlStateNormal];
            ;
            btn.layer.cornerRadius =5;
            btn.layer.borderWidth =2;
            btn.layer.borderColor = [UIColorlightGrayColor].CGColor;
            
            //];
            [landKindView addSubview:btn];
            
            UIView *lineView = [[UIViewalloc] initWithFrame:CGRectMake(0 +2, btnY + i*btnH -1, detailViewW - 4, 1)];
            lineView.backgroundColor = [UIColorgrayColor];
            [landKindView addSubview:lineView];
            
        }
        
        landKindView.layer.cornerRadius =5;
        self.landKindView = landKindView;
        
     }
    return_landKindView;
}

// 分类按钮
- (void)landCategoryBtnClick:(UIButton *)btn
{
    NSInteger index = btn.tag;
   switch (index) {
        case 0:{
            NSString *message = @"AAA";
            UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:@"提示"message:message delegate:selfcancelButtonTitle:@"确定"otherButtonTitles:nil,nil];
            
            ;
            break;
        }
        case 1:
            
        case 2:{
            NSString *message =@"BBB,CCC";
            UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:@"请稍候"message:message delegate:selfcancelButtonTitle:@"取消"otherButtonTitles:@"确定",nil];
            ;
            break;
        }
        default:
            break;
    }
}



#pragma  mark alertView  代理方法
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    [self.landBGViewremoveFromSuperview];
    self.categoryIsShowing =NO;
    
    if (buttonIndex == 0) {
        return;
    }else{
        //意见反馈
        FeedbackController * feedVC = [[FeedbackControlleralloc]init];
        [self.navigationControllershowViewController:feedVC sender:nil];
    }
    
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/164191.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql数据库基础知识总结

    mysql数据库基础知识总结mysql数据库基础知识总结一、基础常用命令1.创建命令createuser‘用户名’@‘ip’identifiedby‘密码’;创建用户dropuser用户名@ip删除用户showdatabases;查数据库showtables;看表createdatabase数据库名defaultcharsetutf8;创建数据库createtable表名(列名数据类型约束···,列名数据类型约束···)engine=in

    2022年6月26日
    20
  • 数学建模:方差分析模型[通俗易懂]

    数学建模:方差分析模型[通俗易懂]数学建模:方差分析模型1.方差分析模型引入考虑的模型,它的自变量是只能取0,1两个值的示例变量。这种变量往往比较两个多个因素的某种效益存在与否。比如考试及格为0,不及格为1.方差分析的实质:假设检验问题一个复杂的事物,其中往往有许多因素互相制约又互相依存。方差分析的目的是通过数据分析找出对该事物有显著影响的因素,各因素之间的交互作用,以及显著影响因素的最佳水平等。方差分析是在可比较的数组中,把数据间的总的“变差”按各指定的变差来源进行分解的一种技术。对变差的度量,采用离差平方和。方差分析方法就

    2022年10月15日
    0
  • 编译成功了,运行为什么会失败_如何编译内核

    编译成功了,运行为什么会失败_如何编译内核1:首先在内核文件夹当中选择编译配置文件arch/arm/configs下选则davinci_dm368_ipnc_defconfig_nand(nandflash启动),davinci_dm368_ipnc_defconfig_nfs(nfs文件系统启动)2:makemenuconfig保存退出3:makeARCH=armCROSS_COMPILE=arm_v5t_le-

    2022年8月13日
    1
  • getResourceAsStream和getClassLoader

    getResourceAsStream和getClassLoader1. Class.getResourceAsStream(Stringpath):path不以’/’开头时默认是从此类所在的包下取资源,以’/’开头则是从ClassPath根下获取。其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源。 2.Class.getClassLoader.getResourceAsStream(Stringpath):默认则

    2022年6月9日
    43
  • 高并发解决方案-代理服务器Nginx[通俗易懂]

    高并发解决方案-代理服务器Nginx[通俗易懂]文章目录Nginx1.Nginx概念2.Nginx的应用场景3.Linux环境下Nginx的安装与启动4.Nginx静态网站部署5.Nginx配置虚拟主机5.1端口绑定5.2域名绑定5.2.1域名概念5.2.2域名级别5.2.3域名与ip绑定6.Nginx反向代理6.1反向代理概念6.2配置反向代理7.Nginx负载均衡7.1负载均衡概念7.2准备工作7.3配置负载均衡Nginx1.Nginx概念    Nginx是⼀款高性能的http服务器/反向代理服务器及电子

    2022年9月29日
    0
  • android画廊无限轮播,ViewPager无限循环实现画廊式banner

    android画廊无限轮播,ViewPager无限循环实现画廊式banner先看一下效果两边显示上一个和下一个item部分布局,可以自动滚动实现:布局主要属性:android:clipChildren=”false”//允许子布局超出父布局显示xml代码:Adapter没什么特别的只要getCount()返回一个很大的值如:returnInteger.MAX_VALUE;适配器代码:packagecom.guzhc.module_demo;importandr…

    2022年4月26日
    218

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号