2009-06-04 41 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

相关问题