无需参考即可找到 UIAlertView
Posted
技术标签:
【中文标题】无需参考即可找到 UIAlertView【英文标题】:Find UIAlertView without having reference to it 【发布时间】:2011-09-28 07:40:03 【问题描述】:我正在编写应用程序测试并想检查当前是否显示 UIAlertView。这意味着我没有指向它的指针,我需要知道所显示的 UIAlertView 的所有者是谁,或者可以在哪些视图堆栈上找到它。
【问题讨论】:
可能重复:iPhone SDK: check if a UIAlertView is showing 谢谢。检查应用程序的窗口是解决方案。没有考虑到有几个窗口。只检查了由应用委托控制的那个。 【参考方案1】:[更新] 实际上,下面的解决方案不适用于 ios 7,因为警报视图不再绑定到特定窗口。阅读这里了解详情:https://***.com/a/18703524/942107
根据 KennyTM 在 Sebastien 提供的另一个问题的链接中的建议,我创建了一个 UIAlertView 类别,其中包含一个返回 UIAlertView 的方法,如果显示能够以编程方式将其关闭。
UIAlertViewAdditions.h:
#import <UIKit/UIKit.h>
@interface UIAlertView (UIAlertViewAdditions)
+ (UIAlertView *) getUIAlertViewIfShown;
@end
UIAlertViewAdditions.m:
#import "UIAlertViewAdditions.h"
@implementation UIAlertView (UIAlertViewAdditions)
+ (UIAlertView *) getUIAlertViewIfShown
if ([[[UIApplication sharedApplication] windows] count] == 1)
return nil;
UIWindow *window = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
if ([window.subviews count] > 0)
UIView *view = [window.subviews objectAtIndex:0];
if ([view isKindOfClass:[UIAlertView class]])
return (UIAlertView *) view;
return nil;
@end
【讨论】:
我在我的项目中使用了这个代码,现在它在 iOS7 中不起作用:( 试试UIWindow *window = [[[UIApplication sharedApplication] windows] objectAtIndex:2];
和UIView *view = [window.subviews objectAtIndex:1];
但是更简洁的方法是检查类名以上是关于无需参考即可找到 UIAlertView的主要内容,如果未能解决你的问题,请参考以下文章
我找到了一种使用 Formspree 无需后端即可直接从网站发送电子邮件的方法。但是我不知道如何在提交时自定义消息