Как настроить iRate классы для ios "Оценить это приложение"

Я не хочу использовать uialertview для всплывающего окна, которое дает пользователю возможность оценить приложение на ios. Я хочу использовать настраиваемое всплывающее окно, но оно не отображается. Помимо использования классов iRate из Интернета, я также создаю xib, который содержит всплывающее окно, которое я хочу отображать, и я изменил в.h с:NSObject на:UIViewController. Я прокомментировал весь код для uialertview и в методе promptForRating, который будет запущен, я делаю uiview из xib видимым, но, видимо, uiview - ноль.

- (void)promptForRating
{
    rateView.hidden = NO;
}

У кого-нибудь есть предложение по поводу появления этого всплывающего окна?

1 ответ

Решение

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

Что вы можете сделать, это

  • Доступ к общему приложению UIApplication
  • Получите все UIWindows этого UIApplication (в обратном порядке, потому что ваш myView должен быть сверху)
  • Выберите окно UIWindow, которое используется по умолчанию
  • Добавьте свой myView в качестве подпредставления UIWindow

По крайней мере, это то, что делает SVProgressHUD.

Вот пример кода

if(!myView.superview){
    NSEnumerator *frontToBackWindows = [[[UIApplication sharedApplication]windows]reverseObjectEnumerator];

    for (UIWindow *window in frontToBackWindows)
        if (window.windowLevel == UIWindowLevelNormal) {
            [window addSubview:myView];
            break;
        }
}

Первая строка - убедиться, что ваш вид не виден (возможно, не нужен в вашем контексте). Чтобы отклонить представление, удалите его из суперпредставления.

Другие вопросы по тегам