有没有办法检测UIView当前可见?

res*_*ode 4 iphone cocoa-touch objective-c uiview

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

Jus*_*ble 13

如果您使用其他答案中的代码,您的应用将在提交到应用商店时被拒绝(使用非公开API).我发现了困难的方式.更好的解决方案是创建一个类别.这是我用来替换原始解决方案中的代码:

@interface UIView (FindFirstResponder)
- (UIView *)findFirstResponder;
@end
Run Code Online (Sandbox Code Playgroud)

@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
Run Code Online (Sandbox Code Playgroud)


Sco*_*tle 5

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

UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
UIView   *firstResponder = [keyWindow performSelector:@selector(firstResponder)];
Run Code Online (Sandbox Code Playgroud)

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

  • 只是想您想知道如果您使用上面的代码提交您的应用程序,它将被拒绝使用非公开API.它发生在我身上. (5认同)