iOS巅峰之点击UIAlertView的灰色部分也能dismiss消失

2023-11-15

{

    UIAlertView *alert;

    UITapGestureRecognizer *recognizerTap;

}


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    

    UIButton *button = [UIButton buttonWithType:(UIButtonTypeCustom)];

    button.frame = CGRectMake(100, 100, 100, 100);

    [button addTarget:self action:@selector(actionButton) forControlEvents:(UIControlEventTouchUpInside)];

    button.backgroundColor = [UIColor redColor];

    [self.view addSubview:button];

    

    

}


- (void)actionButton

{

    alert = [[UIAlertView alloc] initWithTitle:@"模态测试"

                                       message:@"请点击四周的模态区域我就消失"

                                      delegate:nil

                             cancelButtonTitle:@"确定"

                             otherButtonTitles:nil];

    [alert show];

    recognizerTap = [[UITapGestureRecognizer alloc] initWithTarget:self

                                                            action:@selector(handleTapBehind:)];

    

    [recognizerTap setNumberOfTapsRequired:1];

    recognizerTap.cancelsTouchesInView = NO;

    [alert.window addGestureRecognizer:recognizerTap];

}


- (void)handleTapBehind:(UITapGestureRecognizer *)sender{

    if (sender.state == UIGestureRecognizerStateEnded) {

        CGPoint location = [sender locationInView:nil];

        if (![alert pointInside:[alert convertPoint:location fromView:alert.window] withEvent:nil]) {

            [alert.window removeGestureRecognizer:sender];

            [alert dismissWithClickedButtonIndex:0 animated:YES];

        }  

    }  

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS巅峰之点击UIAlertView的灰色部分也能dismiss消失 的相关文章

  • 存在重复元素

    存在重复元素 力扣 LeetCode 给定一个整数数组 判断是否存在重复元素 如果存在一值在数组中出现至少两次 函数返回 true 如果数组中每个元素都不相同 则返回 false 示例 1 输入 1 2 3 1 输出 true 示例 2 输
  • 什么是iiot全称

    iiot的全称是Industrial Internet of Things 翻译成中文便是工业物联网 它是指工业生产中各种设备 不论是工厂里的机器设备或者汽车飞机上的发动机 在这些设备上装置传感器 连接到无线网络终端以收集和共享数据 随着传
  • python3:Python 异常处理以及with 语句的使用

    try except else 语句 是处理异常公式 try 是有可能抛异常的代码块 except 抓取异常的类型 else 是指当没有抓到抛错 就运行这块代码 请看下下边的例子 try print 抓取的有可能的代码块 raise IOE
  • 静态变量与动态变量的定义与区别

    动态变量和静态变量的定义和区别如下 1 定义上 静态变量比动态变量在多一个关键字static 比如 动态变量 int i 静态变量 static int i 2 动态变量在子程序中 每次调用都会从它的初始值开始调用 而不管他在函数中经历了什
  • 淘宝UED招聘题(前端开发部分含参考答案和面试官评语)

    题目1 JavaScript方面小贤是一条可爱的小狗 Dog 它的叫声很好听 wow 每次看到主人的时候就会乖乖叫一声 yelp 从这段描述可以得到以下对象 function Dog this wow function alert Wow
  • 解读 B 站跨平台播放器 IJKPlayer 的前世今生

    转自 https www bilibili com read cv3901523 B站开源IJKPlayer 的过程 很不错 但是不能复制 最近几年 伴随着开发人员对移动端的跨平台需要 B 站自研的 IJKPlayer 应运而生 它是一款基
  • 几个比较好的app开发框架

    学习路线 一 Dcloud 特点 云编译必须联网获取AppId 优点 国内厂商 中文文档 对HTML5的性能 工具 能力都做了深入扩展 提供 IDE 云服务等帮助节省时间 MUI 更贴近国内App使用习惯 提供模块的详细例子 如登录 个人中
  • 学习笔记 JavaScript ES6 异步编程Grenerator用法

    Grenerator的语法和普通的函数是完全不同的 Grenerator在执行时可以暂停 然后可以在暂停的位置继续执行 就是一步一步的执行 不能做为构造函数使用 只能返回一个生成器对象 Grenerator函数的特点是function后面有
  • java 规则二维数组所有打印方式

    import java util public class HelloWorld public static void main String args int array 1 2 3 4 5 6 for循环知道行数列数的情况 for in
  • Go新手速成-string

    1string类型 byte就是unit8 rune就是int32 都可以代表字符型 但是必须格式化打印 要不然打印出来就是ASC码 参考c语言 字符处理的细节 如果是英文意味着比较短 可以用byte来实现 如果是汉字就可以用32位的run
  • AOF详解

    AOF 命令同步 同步命令到 AOF 文件的整个过程可以分为三个阶段 1 命令传播 Redis 将执行完的命令 命令的参数 命令的参数个数等信息发送到 AOF 程序中 2 缓存追加 AOF 程序根据接收到的命令数据 将命令转换为网络通讯协议
  • @JsonFormat和@DateTimeFormat 实践测试

    JsonFormat 出参 DateTimeFormate 入参 http www iteye com problems 53816 DateTimeFormat pattern yyyy MM dd HH mm ss Date timel
  • 基于AT89C51的数字时钟课程设计

    摘要 单片微型计算机简称单片机 又称为微控制器 是将CPU RAM ROM 定时 计数器 I O接口电路集成到一块电路芯片上构成的微型计算机 本次设计的系统由单片机系统 数码管显示系统 键盘 蜂鸣器等组成 通过按键来控制单片机实现数字时钟的
  • clearTaskOnLaunch

    作用 就是程序回到home界面后 再次点击程序图标的效果 影响的是activity的生命周期 简单的 activity A clearTaskOnLaunch设置为true 为主界面 activity B 程序启动A 在启动B 再点击HOM
  • java基础语法之学习武林秘籍入门版(由助手完成)

    在这本武侠版本的 Java 入门教程中 我们将会以一个武侠世界为背景来学习 Java 语言的基础知识 我们会介绍如何安装和配置 Java 开发环境 然后通过实例来学习 Java 的基础语法 包括变量 数据类型 运算符 控制流 数组 方法和类
  • Python异常知识讲解

    合适 基础入门 前 这个是最近的一个任务 做好了 所以也放一篇到博客上吧 就是代码我用图片的形式放出来了 不过妨碍学习哈 也不是特别完善 1 理解异常的概念 2 掌握处理异常的几种方式 3 掌握raise和assert语句 会抛出自定义的异
  • ubuntu下修改yaffs2文件系统镜像文件

    原地址 http www tjworld net wiki Linux Kernel SimulateNandMtdDevice 对原博客的修改 将写mtd设备命令 sudo dd if system img of dev mtdblock
  • Qt之使用QPainter自绘实现窗口阴影边框

    一 简述 今天要说的是如何通过自绘的方式实现窗口的阴影边框 在之前的文章里Qt之使用QGraphicsDropShadowEffect添加窗口边框以及文字阴影效果 讲述到使用Qt的 QGraphicsDropShadowEffect类给窗口
  • Java的垃圾回收机制(GC)(无废话版)

    如果无产阶级不能发出自己的声音 他们就会被社会遗忘 Java垃圾回收机制 GC Java程序会主动释放内存空间 这是因为Java虚拟机有一套比较完善的垃圾回收机制又叫GC garbage collection 机制 1 什么是垃圾 简单来讲

随机推荐

  • 深度:从零编写一个微前端框架

    写在开头 手写框架体系文章 缺手写vue和微前端框架文章 今日补上微前端框架 觉得写得不错 记得点个关注 在看 转发更好 对源码有兴趣的 可以看我之前的系列手写源码文章 微前端框架是怎么导入加载子应用的 3000字精读 原创 带你从零看清N
  • Unity Recorder的使用讲解

    Unity Recorder的使用讲解 使用目的 插件下载 插件位置 窗口基本介绍 基本设置选项 录制列表 Animation Clip 参数讲解 Movie 电影模式 参数介绍 Source GameView Targeted Camer
  • APP+springboot订餐APP 毕业设计-附源码190711

    摘 要 随着现在网络的快速发展 网络的应用在各行各业当中它很快融入到了许多学校的眼球之中 他们利用网络来做这个职位推荐的网站 随之就产生了 订餐app 这样就让用户订餐app更加方便简单 对于本订餐app的设计来说 它主要是采用后台采用ja
  • /proc/sys/kernel/printk

    proc sys kernel printk 首先 printk有8个loglevel 定义在
  • telnet远程登录实验配置(Telnet认证有两种模式:AAA模式,密码模式。)

    目录 telnet远程登录 Telnet认证有两种模式 AAA模式 密码模式 password认证模式 AAA认证模式 三 FTP文件传输协议配置 telnet远程登录 Telnet认证有两种模式 AAA模式 密码模式 password认证
  • Node.js 高级篇(三):Mongoose 增删改查

    文章目录 一 mongoose 介绍 Mongoose 有两个特点 二 mongoose 的安装以及使用 2 1 安装 2 2 引入mongoose并连接数据库 2 3 定义Schema 2 4 创建数据模型 2 5 增 2 6 删 2 7
  • React性能分析工具 -React-Performace

    目录 介绍 用途 安装 插件安装 使用 注册观察者 1 安装微服务器
  • 避坑系列1 - 安装Ubuntu & Jenkins, 使用FinalShell

    2023年7月5日 我开始了实验室的工作 首先是要为主机安装Ubuntu 但仍然遇到了一些问题 我在想 今后会遇到许多错误 故障 在某些特定的情境下必然会遇到 比如 用rufus刷镜像时一定会遇到找不到设备的问题 我在网上找了一会才找到答案
  • 面试总结:html5的新特性(十大类)

    这里只以 根目录的方式来说明 详细的见如下连接 https www cnblogs com vicky1018 p 7705223 html 1 语义化标签 好处 1 使代码结构清晰 便于阅读2 便于SEO3 无障碍阅读4 便于后期的维护与
  • 下载多个ts文件,合并为一个mp4文件,并发送到微信

    1 使用internet download manager 来下载ts文件 2 使用tsMuxer来split ts文件 3 VLC media player convert ts to mp4 4 使用MP4Tools将两个ts文件合并
  • windows中的会话概念的总结

    转载请标明是引用于 http blog csdn net chenyujing1234 欢迎大家拍砖 一 参考 http blog csdn net zacklin article details 7579217 以前我一直不理解Windo
  • (三)无人机数据处理算法介绍——目标识别一

    无人机目标识别技术 1 几个相近的概念 图像分割 目标识别 模式识别 目标跟踪 图像分割 根据图像的像素统计特征来对图像进行分割 使得不同类的的图像分开 目标识别 范围广一点 所有的检测目标方法 都可以叫做目标识别 模式识别 当我们采用特定
  • c++ 独一无二的不可拷贝拷贝对象

    方法一 将类的拷贝构造函数和赋值函数只声明 不定义 并定义为 private class A private friend void copy one A const Uncopyable A operator const Uncopyab
  • 简单聊一聊 Spring 事务传播行为和事务隔离级别的那些事

    前言 Spring的事务 也就是数据库的事务操作 符合ACID标准 也具有标准的事务隔离级别 所以Spring的事务隔离级别和事务的传播行为是面试中经常考察的问题 下面简单做下总结 事务并发引发的问题 脏读 一个事务读取到了另一个事务修改但
  • Python记8(tkinter

    目录 1 参考 2 窗口 2 1 创建窗口 Tk 长宽geometry 屏幕宽高 拉伸窗口resizable 窗口名title 循环mainloop 获取窗口大小 2 2 窗口最大化 最小化 正常显示 state iconify attri
  • 知识分享系统

    开发工具 eclipse idea vscode等 数据库 sqlite mysql sqlserver等 功能模块 请用文字描述 至少200字
  • 一般数据库增量数据处理和数据仓库增量数据处理的几种策略

    开篇介绍 通常在数据量较少的情况下 我们从一个数据源将全部数据加载到目标数据库的时候可以采取的策略可以是 先将目标数据库的数据全部清空掉 然后全部重新从数据源加载进来 这是一个最简单并且最直观的并且不容易出错的一种解决方案 但是在很多时候会
  • MYSQL数据库--存储引擎

    前言 数据库存储引擎是数据库底层软件组件 数据库管理系统使用数据引擎进行创建 查询 更新和删除数据操作 简而言之 存储引擎就是指表的类型 数据库的存储引擎决定了表在计算机中的存储方式 不同的存储引擎提供不同的存储机制 索引技巧 锁定水平等功
  • HTTP和HTTPS协议

    HTTP协议 HTTP协议是一种应用层的协议 全称为超文本传输协议 URL URL值统一资源定位标志 也就是俗称的网址 协议方案名 http 表示的就是协议方案名 常用的协议有HTTP协议 HTTPS协议 FTP协议等 HTTPS协议是以H
  • iOS巅峰之点击UIAlertView的灰色部分也能dismiss消失

    UIAlertView alert UITapGestureRecognizer recognizerTap void viewDidLoad super viewDidLoad Do any additional setup after