Я использую 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
после того, как он уже был настроен и сделано видимым ...?