去除掉屏幕上所有的UIAlertView
来源:互联网 发布:淘宝模特招聘 编辑:程序博客网 时间:2024/05/01 21:42
在 iOS 7 系统之前, AlertVIew 显示的原理是在屏幕上家里一层 Alertwindow , 然后AlertView 的视图加在了这个Window 上,所以可以通过获取window上的视图从而获取UIAlertView 然后令其消失,具体代码:
for (UIWindow* w in [UIApplication sharedApplication].windows) for (NSObject* o in w.subviews) if ([o isKindOfClass:[UIAlertView class]]) [(UIAlertView*)o dismissWithClickedButtonIndex:[(UIAlertView*)o cancelButtonIndex] animated:YES];} }}
但是在iOS 7 上,这种方法就不起作用,因为显示的机制不同了,在Stack Overflow 中找到这样一篇说明:
大概的意思是,在iOS 7 中,UIAlertView 的 window 并不是显示在[UIApplication shareApplication].windows 中,而是被加入到了[UIApplication keyWindow] 中,但是并没有留出引用或者说指针,所以我们没有办法获取到;
所以在iOS 7 中,如果要使用如果要实现这个功能,就要在[alert show ] 的时候保留一份UIAlertView 的指针,在需要收到令其消失的地方,统一用保留的副本指针调用 dismissWithClickedButtonIndex ;可以通过继承UIAlertView 然后重写show 方法 或者 在 类别的扩展中重写 show ,在此就不详细说明了!
或者还有另一种方法
<span style="font-size:14px;">Class UIAlertManager = objc_getClass("_UIAlertManager");UIAlertView *topAlertView = [UIAlertManager performSelector:@selector(topMostAlert)];[topAlertView dismissWithClickedButtonIndex:0 animated:YES];</span>
使用前要引用 #import<objc/runtime.h>
0 0
- 去除掉屏幕上所有的UIAlertView
- 去除掉屏幕上所有的UIAlertView
- 去除掉屏幕上所有的UIAlertView
- UI -- 去除掉屏幕上所有的UIAlertView
- Java去除掉HTML里面所有标签,
- 去除掉svn的标记
- 怎样去除掉心灵的杂草
- 去除掉TabHost下面那个边线的小技巧
- 去除掉浏览器对输入框的自动补全
- vi编辑器如何去除掉开头的#号
- 191 除掉当前元素,其他所有元素的积
- iOS一次性移除掉NSUserDefaults中所有的数据
- iOS 一次性移除掉NSUserDefaults中所有的数据
- 屏幕大小适应地图上的所有的坐标
- 在android4.0.4的SDK里裁剪APK,把不需要的APK去除掉
- 去除掉数组中的值为0的项 (指定的某一项或者多项)
- 在android4.0.4的SDK里裁剪APK,把不需要的APK去除掉
- 批处理——获取当前文件夹的TXT文件名和去除掉最后一个文件名
- (1)搭建opencv-android环境
- [SQLite]www.sqlite.org官网.NET最新版本所有内容下载
- Linux core dumps 的调试 .
- 无向图最小割算法。
- wm_keydown 和vm_char 区别以及 mfc DiapatchMessage派送消息返回之前的过程解析
- 去除掉屏幕上所有的UIAlertView
- 解析java.util集合类源码(List和AbstractList篇)
- linux spi驱动开发学习
- how to add a swap file on linux
- Enhancement to obsolete parent cursors if VERSION_COUNT exceeds a threshold (文档 ID 10187168.8)
- 2014.01.18 raid1
- 能量项链
- 怎么使QT 的结果在终端显示
- Ubuntu的学习(二)『学习命令』