首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当在UIAlertController外部单击时,请不要忽略它

是一个关于iOS开发中UIAlertController的使用问题。UIAlertController是iOS开发中常用的弹窗控件,用于显示提示、警告或确认信息。

在UIAlertController外部单击时,如果不处理点击事件,可能会导致用户无法关闭弹窗或产生意外的行为。为了避免忽略外部点击事件,可以采取以下几种方式:

  1. 添加取消按钮:在创建UIAlertController时,可以通过addAction方法添加一个取消按钮,使用户可以主动关闭弹窗。示例代码如下:
代码语言:txt
复制
let alertController = UIAlertController(title: "提示", message: "这是一个弹窗", preferredStyle: .alert)
let cancelAction = UIAlertAction(title: "取消", style: .cancel, handler: nil)
alertController.addAction(cancelAction)
  1. 添加背景视图点击事件:可以在弹窗显示时,添加一个透明的背景视图,并为该视图添加点击事件,当用户点击背景视图时,关闭弹窗。示例代码如下:
代码语言:txt
复制
let alertController = UIAlertController(title: "提示", message: "这是一个弹窗", preferredStyle: .alert)

// 添加背景视图
let backgroundView = UIView(frame: alertController.view.bounds)
backgroundView.backgroundColor = UIColor.black.withAlphaComponent(0.5)
alertController.view.addSubview(backgroundView)

// 添加点击事件
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(dismissAlertController))
backgroundView.addGestureRecognizer(tapGesture)

// 显示弹窗
self.present(alertController, animated: true, completion: nil)

// 处理点击事件
@objc func dismissAlertController() {
    alertController.dismiss(animated: true, completion: nil)
}
  1. 自定义弹窗样式:通过自定义弹窗样式,可以实现点击弹窗外部区域时自动关闭弹窗的效果。具体实现方式可以参考相关的开源库或自行实现。

UIAlertController的应用场景包括但不限于:显示提示信息、警告信息、确认对话框、输入框等。在iOS开发中,UIAlertController是常用的用户交互组件之一。

腾讯云提供了丰富的云计算产品,其中与iOS开发相关的产品包括云服务器、移动推送、移动直播、移动分析等。具体产品介绍和链接地址可以参考腾讯云官方文档或咨询腾讯云客服人员。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

《iOS Human Interface Guidelines》——Alert警告框

API NOTE 创建UIAlertController并定义UIAlertControllerStyleAlert来在你的代码中使用警告框。...不要当你需要传达消极的信息不要听起来像责问或者审判。人们理解很多警告框会告诉他们问题或者关于危险状态的警告。只要你使用友好的语气,直接且消极就比积极但拐弯抹角要好。...如果你一定要提供详细的导航,遵循下面的指南: 确保使用单词“点击”(不是“触摸”或“单击”或“选择”)来描述选择动作。 不要把按钮标题用引号标记起来,但是要维持其大写。...特别地: 当最可能的按钮执行非破坏性的操作应该在两个按钮警告框的右边。取消按钮应该在左边。 当最可能的按钮执行破坏性的操作应该在两个按钮警告框的左边。取消按钮应该在右边。...尽可能地使用与警告框文本直接相关的动词和动词短语——比如“取消”、“查看所有”、“回复”或者“忽略”。 当没有更好的选择使用“OK”作为简单的接受选项。不要使用“Yes”或“No”。

1.3K20

【IOS开发基础系列】UIAlertController专题

1 UIAlertView         随着苹果上次iOS 5的发布,对话框视图样式出现在了我们面前,直到现在都没有发生过很大的变化。...Observer模式定义对象间的一对多的依赖关系,当一个对象的状态发生改变, 所有依赖于的对象都得到通知并被自动更新。我们可以在构造代码块中添加如下的代码片段来实现。     ...不过您仍然可以在需要的时候以编程方式释放,就像释放其他视图控制器一样。您应当在应用程序转至后台运行时移除对话框或者上拉菜单。...此监听务必在Alertview被释放移除,不然可能引起挂机问题。        ...具体表现是:在项目中,自定义AlertView实例的生命周期是在plugin中管理的,plugin差不多是单例模式,故自定义AlertView实例不会轻易释放,只有下一次调用插件,实例进行替换才会将上一实例释放

51330
  • App内嵌支付宝哪些梗

    支付宝为移动端的开发提供两种下单支付的方式: 1 App内部完成自签名 2服务端完成签名,App负责传递单据信息给支付宝完成下单 因为支付宝不推荐App内部完成自签名下单,因此1的流程我们忽略……因此我们的重点就来到了如何调用...1 高版本SDK无法回调寻找低版本的SDK完成 2 无论是高低版本的SDK当你的 URL Schemes短的时候都无法回调 这里不得不吐槽一下,支付宝的官网只说需要URL Schemes要特别一点不要与其他人重复了...*alert = [UIAlertController alertControllerWithTitle:@"支付成功" message:@"请到\"我的订单\"查看" preferredStyle:...*alert = [UIAlertController alertControllerWithTitle:@"支付失败" message:@"请到\"我的订单\"重新支付" preferredStyle...self.vc presentViewController:alert animated:NO completion:^{ }]; } } 总结一下 当你无法回调

    62020

    将Hive数据迁移到CDP

    创建表位置的外部表限制 Hive 将仓库中的默认位置分配给托管表。在CDP中,Hive也 不会允许在查询中使用LOCATION子句来创建一个管理表。使用此子句,您只能在创建外部指定位置。....)]; 在 MANAGEDLOCATION 子句中,您可以在创建 Hive 数据库为托管表指定顶级目录。不要设置LOCATION和MANAGEDLOCATION为相同的HDFS路径。...当 Hadoop 密钥管理服务器 (KMS) 连接是 SSL 加密的执行以下过程。 执行以下任一操作: 将自签名 SSL 证书安装到所有主机上的 cacerts 文件中,然后跳过以下步骤。...采取以下措施之一: 如果您有一个由 Kerberos 保护的集群,搜索 Hive Delegation Token Store ,指定 Kerberos 令牌的存储,如下所述。...新的外部表存储在 Hive 外部仓库中 /warehouse/tablespace/external/hive。 要更改 Hive 仓库的位置,导航到以下第一步中的以下菜单项之一。

    1.2K30

    .NET6打包部署到Windows Service

    %n%n关闭的所有实例。然后单击“确认”继续安装,或者单击“放弃”退出。UninstallAppRunningError=卸载程序检测到 %1 正在运行。%n%n关闭的所有实例。...%n%n修复错误并重新安装。 EntryAbortRetryIgnore=单击“重试”重新尝试,单击忽略”将继续安装,或者单击“放弃”退出安装。...; *** File copying errors FileAbortRetryIgnore=单击“重试”再试一次,单击忽略忽略该文件,或者单击“放弃”退出安装程序。...FileAbortRetryIgnore2=单击“重试”再试一次,单击忽略忽略该文件继续安装,或者单击“放弃”退出安装程序。...%n%n单击“重试”删除只读属性并重新尝试,单击忽略忽略该文件,或者单击“放弃”退出安装程序。

    1K10

    iOS10.3后允许App运行中变更App图标

    完成后的操作将会在任意的后台队列中异步执行; 如果需要更改UI,确保在主队列中执行。...一定要注意键就是图片的名字,这样在调用上面的API传入图片名才能够找到对应的键值对,否则会变更失败,控制台会显示找不到文件。 使用方法 首先我们在界面上放两个按钮,点击响应就是要更换成不同的图标。...去掉变更图标的提示框 这个提示框是用 UIAlertController 来实现的,而所有的 UIAlertController 都是通过 presentViewController: animated...通过观察和测试可以发现,这个弹出框是没有 title 和 message 的,我们自己做的弹出框一般至少会有 title,message 也经常会用,所以两者都没有就比较特殊了,可以根据这个情况来针对做特殊处理...).message); // 换图标的提示框的title和message都是nil,由此可特殊处理 UIAlertController *alertController

    82320

    【说站】win10系统打开网页不是私密连接怎么解决?

    3、禁用所有扩展程序后,检查问题是否仍然存在。如果没有,您需要逐个启用扩展,直到找到导致问题的扩展。 4、找到有问题的扩展后,更新并检查是否能解决问题。...现在,单击“清除浏览数据”按钮。 5、在Chrome删除所选数据并重新启动浏览器稍候。 6、浏览器重新启动后,检查问题是否已解决。...单击重置按钮以执行重置。 4、重置浏览器后,问题应完全解决。 方法九:转到网站 如果您在尝试访问自己喜欢的网站收到“您的连接不是私人”错误消息,则可能只想忽略此警告。...忽略此消息不是最好的解决方案,但是如果在尝试访问可靠的网站出现此消息,则可能要忽略。为此,请按照下列步骤操作: 1、出现错误消息单击“高级”。...3、单击链接,该网站现在应该打开,没有任何问题。 4、我们必须提到,这不是最安全的解决方案,但是如果您决定忽略此消息,谨慎操作,并尽量不要输入任何敏感信息。

    10.5K20

    BubbleRob tutorial 遇到的问题

    当子脚本以编程方式访问对象,将多个对象分组为一个模型也很重要;记住,在V-REP中,对象/模型可以在任何时候复制,也可以在模拟期间复制。...你也可以双击场景层次结构中的对象图标来打开对话框,或者单击的工具栏按钮: ? 在“场景对象属性”对话框中,单击“公共”按钮以显示“对象公共属性”对话框。对话框显示最后选择对象的设置和参数。...:当启用时,当模拟运行时,对象将忽略删除操作(但是,当通过代码触发删除操作,删除操作仍然有效)。...想象一下,在你的场景中有100个相同的机器人,你想用类似的方式对它们进行修改:只需修改其中一个,选中,然后单击“转移DNA”工具栏按钮。...Collection self-collision indicator收集自冲突指示器:当在两个相同的收集之间执行冲突(或最小距离)计算,V-REP通常会将所有收集项与该收集中的所有其他项进行核对。

    1.7K10

    浅谈Android Studio3.6 更新功能

    要启用拆分视图,请单击编辑器窗口右上角的“拆分”图标。 ? 资源管理器更新 资源管理器现在支持大多数资源类型,并包括改进的过滤器和搜索选项。...要了解更多信息,阅读完整的发行说明。 View binding 在代码中引用视图,View binding可提供编译安全性。...代码更改时更新类 现在您可以添加一个类,然后通过单击Apply Code Changes 或 Apply Changes, 或者 Restart Activity ?...APK重新加载本地库 当在IDE外部更新包含本地库代码的APK,您不再需要创建新项目。 Android Studio会检测APK中的更改,并为您提供重新导入APK的选项。...附加仅Kotlin的外部APK源 现在,当您分析和调试预建的APK,可以附加仅Kotlin的外部APK源。

    1.3K30

    ios开发之xcode环境介绍

    Product Name 这里填入你的 App 的名字,建议使用英文字母,最好不要有空格和特殊字符。...的对象,UIAlertController 就是一个类似对话框的东西 第二行,第三行,创建了一个 UIAlertAction 的对象,并把这个对添加到了刚才创建的 UIAlertController,...第十二步 我们选中 Main.storyboard,在页面中添加一个新的 Button,并把的内容改为 开始新的一局 ,然后在 1 的位置输入 Text,在 2 的位置找到 Text Field,然后把拖到...这次的做法和之前的添加 Button 的响应事件有点不同,选中 1 的 Text Field,然后按住 Ctrl 键不放,同时鼠标左键按住拖动到 2 的位置,松开鼠标和键盘,注意,和之前一样,要拖动到类的作用域里,不要不小心拖到方法的作用域中去...(title: nil, message: "输入0-99中的任意一个数字", preferredStyle: .Alert) let action = UIAlertAction

    2.4K60

    iOS适配

    } iOS8 cell 层级的改变 如果你像这样取cell 的row 的话,那你又要加个判断方法了,在iOS8下cell的层级又改了,基本上每升级一个版本,苹果都会对cell的结构进行调整,在此建议不要用这样的方式取...示例代码如下: UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"My Alert" message:@"...如果你在iOS 8 里面使用UIActionSheet and UIAlertView 可能会出现一些很奇怪的问题,建议在iOS 8 里面使用UIAlertController,iOS 8 之前使用UIActionSheet...NSAppTransportSecurity NSAllowsArbitraryLoads 详细介绍 查看...其他适配 详细介绍 查看 iOS10适配 设备权限添加提示信息 最近更新版本无论提交几次 在构建版本里都不显示 iOS 10 的设备权限需要在plist 文件里面添加字段。

    94010

    React Hook:检查外部点击

    当我们在 React 中实现下拉菜单或抽屉组件,这些组件通常需要在单击菜单按钮或组件外部关闭。为了在我们的自定义组件中允许这种行为,我们可以创建一个自定义钩子,每当需要,它可以应用相同的行为。...这里是一个简单的自定义钩子,检查鼠标单击是否在当前组件的外部。const useCheckOutside = (clickOutside: () => void, exceptId?...exceptId 是一个可选属性,可用于在点击处不希望关闭行为时忽略。...我们需要这个属性,因为通常菜单或下拉按钮也是外部点击的一部分,按钮的 onClick 事件将使菜单或下拉框的可见性变为可见,而外部点击将可见性变为隐藏。...下面的函数描述了 exceptId 将在 mousedown 事件中被忽略

    14110

    安全跳转页面·插件版

    此插件的实施,更像是一份无形的“免责声明”,向访问者无声宣告:作为网站管理者,我已经采取措施确保连接的安全性,即便遭遇外部链接可能带来的不确定性,也已事先提醒,尽到了告知的责任。...这使得插件能够在生成静态页面,处理和替换外部链接,增强博客的安全性,而不需要在客户端引入 jQuery。...注意,以上配置项中未设置空值判断,不要留空。如果您不需要某个配置项并希望使用默认值,自行填写为默认值或直接删除对应配置项!...background-color: #abedd8; } {% endif %} 注意,上面的{% if not darkmode %}不能删除,这个是模板文件的配置,表示当在符合要求将其包裹的内容放置到文件中...下面的JS选项,如果无必要,不要删除。 除此之外,你还可以更改其中的结构,但是尽量不要修改类名,有些类名可能绑定有特定的跳转。

    23720

    办公技巧:10个WORD神操作,值得收藏!

    这时,如果想要正确打印出该文档,我们可以这样做: 当另存为或保存文档,可以进入“保存选项”,选择“将字体嵌入文件”,这样就可以把创建此文档所用的字体与文档保存在一起,当在另一台电脑上打开此文档,仍可用这些字体来查看和打印文档...但是,用户需要注意的是,当在另一台电脑上打开该文档,不能对嵌入的字体文本进行修改,否则会使嵌入的字体丢失。...8 Word图片轻松移 轻松插入移动图片 在Word中可以通过拖动图形来移动。但是,“嵌入型”的图形只能放置在段落标记处。...首先要将“嵌入型”更改为其他环绕类型 要拖动图形,请单击选中,然后将它拖动到需要的位置。当然,我们也可以微移选中的浮动图形,选中图形后使用光标键从任意4个方向微移。...9 截图无困扰 此功能容易被忽略 经常为怎么截屏困扰着,原来word里还有这样的神器,点击“插入”菜单,顺利找到“屏幕截图”按钮,试一下吧,绝对吓你一跳。

    4K10

    升级IOS8游戏上传自定义头像功能失效的问题

    为了支持arm64,之前已经折腾了很久,昨晚打包准备提交苹果审核,测试那边的同事反馈说游戏上传自定义头像功能不可用了。...原因是UIActionSheet在ios8中已经被弃用了(点击查看详情>>),使用UIAlertController进行替代,这里有两篇文件介绍UIAlertController in IOS8>...> UIAlertController>> 跟踪代码后,发现它在调用UIPopoverController的presentPopoverFromRect方法后,直接就调用了popoverControllerDidDismissPopover...那我想既然隐藏了,那就不要play嘛,结果试了一下,嗯,不崩溃了!好神奇,然后代码又调回去,试了一上,好了!居然好了!...换成IOS8.1的SDK后,上传头像功能不可用了,搜索了好久发现都跟自己的问题对不上,当输入特定的关键字出来的第一条就是自己想要的,结果几分钟就把问题解决了,但找相应答案之前却已经花了将近4个小时…

    67920

    临时全局变量和IRISTEMP数据库

    当代码需要临时存储数据并再次读取,代码将向使用该命名约定的全局变量写入数据,并从全局变量读取数据。...如果需要通过事务管理临时工作,不要使用IRISTEMP中的全局变量来实现此目的。 请注意,仅对不需要保存的工作使用IRISTEMP。...定义临时全局变量的映射 要定义临时全局变量的映射,执行以下操作: 选择一个命名约定,并确保所有开发人员都知道这一点。...这种效率差异对于少数全局变量来说可以忽略不计,但当有数百个独立的全局变量,效率差异就非常明显。...不要包括名称的第一个插入符号。 例如: AcmeTemp* 此映射会导致名称以AcmeTemp*开头的所有全局变量映射到IRISTEMP数据库。 单击OK。

    20020

    VBA专题05-1:一文彻底掌握用户窗体编程基础知识(上)

    指定控件和用户窗体,以及Me关键字 当在用户窗体代码模块中指定窗体中的控件,可以通过名字指定它们,例如txtFirstName.value="John"。...如果再次显示,初始化程序不会再次运行。(但Activate程序将会运行)。为了从内存中清除窗体,必须卸载(unload)。当用户单击关闭按钮关闭窗体,用户窗体将被自动卸载。...激活用户窗体 如果不卸载用户窗体而只是隐藏,然后再显示,初始化事件不会再运行。但是,激活(Activate)事件将会发生。当用户窗体每次获得焦点,都会触发激活事件。...在每次显示用户窗体,该事件也会发生。如果有几个用户窗体同时可见,那么当在这些窗体之间切换,激活事件也会被触发。...当在VBE中使用代码窗口顶部的下拉菜单创建一个事件过程,该过程会自动为的所有参数设置合适的值。 一些参数是只读的,而另一些参数则可读写。

    6.3K20

    翻译|前端开发人员的10个安全提示

    20200107-plugin-730x375.jpg Web安全是前端开发人员经常忽略的主题。...当我们评估网站的质量,我们通常会查看性能,SEO友好性和可访问性等指标,而网站抵御恶意攻击的能力却常常被忽略。...为了实现这一点,恶意用户将网站B嵌入到一个不可见的iframe中,然后将iframe放置在网站A上毫无防备的用户的光标之下,因此当用户单击,或者更确切地说,认为他们单击了网站A上的元素,他们实际上是单击了网站...5.不要泄露referrer值 当你点击一个链接,从你的网站导航,目的地网站将收到你的网站上最后一个位置的URL在一个 referrer 头。...浏览器具有 Subresource Integrity 功能,该功能可以验证您正在加载的脚本的加密哈希,并确保未被篡改。

    1K71
    领券