2013-07-09 2 views
0

Я добавил UIView/UIWindow в верхней части экрана.Позвольте касания пройти через UIView или UIWindow

UIWindow *statusBarWindow = [[UIWindow alloc] initWithFrame:[UIApplication sharedApplication].statusBarFrame]; 
statusBarWindow.windowLevel = UIWindowLevelStatusBar + 1; 
statusBarWindow.userInteractionEnabled = NO; 
[statusBarWindow makeKeyAndVisible]; 

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

Как я могу позволить UIView/UIWindow не обрабатывать события касания?

Я пробовал .userInteractionEnabled = NO, но это не сработало. Благодаря!

+2

Вы добавляете в приложение второе приложение UIWindow? Если это так, вы не должны быть «Если приложение не может отображать контент на экране внешнего устройства, приложение имеет только одно окно». (Http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWindow_Class/UIWindowClassReference/UIWindowClassReference.html) –

ответ

1

Один из способов - переопределить -hitTest:withEvent:, чтобы вернуть NO в том виде, в котором вы не хотите отвечать на касания.

Возможно, лучше всего использовать представление, которое не является окном для этого, так что метод supview hitTest:withEvent: продолжит поиск иерархии представлений и найдет следующее представление в этом месте. (У Windows нет супервизоров, и я не уверен, что диспетчер событий проверит другие окна для одного и того же события.)