如何知道视图层次结构中是不是显示 UIActionSheet?

Posted

技术标签:

【中文标题】如何知道视图层次结构中是不是显示 UIActionSheet?【英文标题】:How to know if there is a UIActionSheet showing in view Hierarchy?如何知道视图层次结构中是否显示 UIActionSheet? 【发布时间】:2013-01-15 10:34:37 【问题描述】:

如何知道View Hierarchy 中是否显示UIActionSheet? 我也想参考那个UIActionSheet,有什么好主意吗?

【问题讨论】:

为操作表使用标签并实现委托。 可能重复:***.com/questions/4363317/…,看看第二个答案 @RoxDorentus 我不认为它完全重复,但它确实解决了我的问题,谢谢。 【参考方案1】:

请注意,在 ios6 上,您需要递归搜索才能找到 UIActionSheet,它现在不是 UIWindow 的直接子视图。

static UIView *actionSheet = nil;
-(void)findActionSheetInSubviewsOfView:(id)view

    if (actionSheet) 
        return;
    
    if ([[view valueForKey:@"subviews"] count] != 0) 
        for (id subview in [view valueForKey:@"subviews"]) 
            if ([subview isKindOfClass:[UIActionSheet class]]) 
                actionSheet = subview;
            
            else
                [self findActionSheetInSubviewsOfView:subview];
        
    


-(UIActionSheet*) actionSheetShowing 
    actionSheet = nil;
    for (UIWindow* window in [UIApplication sharedApplication].windows) 
        [self findActionSheetInSubviewsOfView:window];
    

    if (actionSheet) 
        return (UIActionSheet*)actionSheet;
    
    return nil;

【讨论】:

以上是关于如何知道视图层次结构中是不是显示 UIActionSheet?的主要内容,如果未能解决你的问题,请参考以下文章