У меня есть класс, который взаимодействует с веб-службой и используется во всем приложении. Я ищу способ показать сообщение об ошибке в UIActionSheet поверх того, что когда-либо просматривал пользователь. Есть ли простой способ сделать это? Я бы хотел избежать методов обратного вызова во всех представлениях, если это вообще возможно.
Есть ли способ обнаружить, что UIView в настоящее время видимо?
Ответ 1
Если вы используете код в другом ответе, ваше приложение будет отклонено при отправке в хранилище приложений (для использования непубличного 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
Ответ 2
Что вы хотите сделать, это найти первого ответчика ключевого окна, которое я бы подумал. Вы можете сделать это вот так:
UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
UIView *firstResponder = [keyWindow performSelector:@selector(firstResponder)];
Это должно дать вам представление для использования в вашем вызове в UIActionSheet.