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