4

我有一个与 Web 服务通信并在整个应用程序中使用的类。我正在寻找的是一种在 UIActionSheet 中显示用户所在视图之上的错误消息的方法。有没有简单的方法可以做到这一点?如果可能的话,我想避免在每个视图中调用回调方法。

4

2 回答 2

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
于 2009-12-01T02:14:00.673 回答
5

你想要做的是找到我认为的关键窗口的第一响应者。你可以这样做:

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

这应该为您提供在调用 UIActionSheet 时使用的视图。

于 2009-06-04T12:06:36.607 回答