2013-01-15 33 views
1

如何知道View Hierarchy中是否有UIActionSheet? 另外我想獲得一個參考UIActionSheet,有什麼好主意?如何知道是否有UIActionSheet顯示在視圖層次結構中?

+0

使用動作表的標籤並實現委託。 –

+1

可能的重複:http://stackoverflow.com/questions/4363317/iphone-detecting-if-a-uialert-uiactionsheet-are-open,看看第二個答案 –

+0

@RoxDorentus我不認爲它的總數重複,但它確實解決了我的問題,謝謝。 – CarmeloS

回答

6

請注意,在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; 
} 
+0

不錯..這工作正常。謝謝。 – Tarun