Есть ли способ определить, какой UIView в данный момент виден? - PullRequest
4 голосов
/ 04 июня 2009

У меня есть класс, который общается с веб-сервисом и используется во всем приложении. То, что я ищу, - это способ отображения сообщения об ошибке в UIActionSheet поверх того, что когда-либо просматривал пользователь. Есть ли простой способ сделать это? Я хотел бы избежать методов обратного вызова в каждом представлении, если это вообще возможно.

Ответы [ 2 ]

13 голосов
/ 01 декабря 2009

Если вы используете код в другом ответе, ваше приложение будет отклонено при отправке в магазин приложений (для использования непубличного 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 голосов
/ 04 июня 2009

Что вы хотите сделать, так это найти первого респондента ключевого окна, которое я бы подумала. Вы можете сделать это так:

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

Это должно дать вам представление об использовании в вашем вызове UIActionSheet.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...