Заменить UIWindow - PullRequest
       15

Заменить UIWindow

3 голосов
/ 09 января 2012

Я использую phonegap для разработки веб-приложений с помощью js, но мне потребуются определенные функции, которые могут быть выполнены только в целях c. Подробно я хочу зарегистрировать прикосновения к веб-представлению, чтобы вызвать автоматическое закрытие наложенных видов. Поиск в Google для «обнаружения касаний» приводит к решению о том, что следует создать подкласс UIWindow и перезаписать sendEvent, чтобы определить, был ли выбран нужный вид.

Это на самом деле работает довольно хорошо, но я заметил, что phonegap уже выделит и установит экземпляр UIWindow в своем коде, поэтому я не могу использовать подкласс UIWindow. Таким образом я нашел, что это решение работает:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
   bool res= [super application:application didFinishLaunchingWithOptions:launchOptions];

   // ok, now this part is kind of ugly
   // replace normal UIWindow with tap-detection enabled version

   [self.viewController.view removeFromSuperview];

   CGRect screenBounds = [ [ UIScreen mainScreen ] bounds ];

   TapDetectWindow* tapWindow= [[[TapDetectWindow alloc] initWithFrame:screenBounds] autorelease];

   tapWindow.tapDelegate= self.logic;
   tapWindow.targetView= self.webView;

   self.window = tapWindow;
   self.window.autoresizesSubviews = YES;

   [self.window addSubview:self.viewController.view];
   [self.window makeKeyAndVisible];

   return res;
}

Хотя это работает как брелок (без каких-либо побочных эффектов), мне было интересно, будет ли это хорошим подходом или я собираюсь что-нибудь сломать, заменив UIWindow после того, как он уже был настроен и сделано видимым ...?

...