2009-06-04 44 views
4

我有一個類與Web服務進行通信,並在整個應用程序中使用。我正在尋找的是一種在UIActionSheet中顯示錯誤消息的方式,以查看用戶所處的位置。是否有一種簡單的方法可以執行此操作?如果可能的話,我想避免在每個視圖中回調方法。有沒有辦法來檢測UIView當前可見?

回答

13

如果您在其他答案中使用代碼,則在提交到應用商店時(使用非公開API),您的應用將被拒絕。我發現那很難。更好的解決方案是創建一個類別。以下是我用來取代原來的解決方案的代碼:

@interface UIView (FindFirstResponder) 
- (UIView *)findFirstResponder; 
@end 

而且

@implementation UIView (FindFirstResponder) 
- (UIView *)findFirstResponder 
{ 
    if (self.isFirstResponder) {   
     return self;  
    } 

    for (UIView *subView in self.subviews) { 
     UIView *firstResponder = [subView findFirstResponder]; 

     if (firstResponder != nil) { 
      return firstResponder; 
     } 
    } 

    return nil; 
} 
@end 
5

你想要做的是找到我認爲的關鍵窗口的第一響應者。你可以這樣做:

UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow]; 
UIView *firstResponder = [keyWindow performSelector:@selector(firstResponder)]; 

這應該會給你在UIActionSheet調用中使用的視圖。

+0

這做到了。謝謝。 – respectTheCode 2009-06-09 11:29:30

+5

只是想你想知道,如果你提交你的應用程序與上面的代碼,它會被拒絕使用非公開API。它發生在我身上。 – 2009-12-01 00:13:41

相關問題