2014-10-28 2 views

ответ

0

Спасибо, но я только что нашел способ:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
    { 
     for (UIWindow *win in [[UIApplication sharedApplication] windows]) { 
      if (win.tag != self.tag) { 
       return [win hitTest:point withEvent:event]; 
      } 
     } 
     return nil; 
    } 
1

Вы просто должны быть в состоянии вывести его из строя, как и любой UIView.

UIWindow *secondWindow = [[UIWindow alloc] initWithFrame:<#frame#>]; 
[secondWindow setUserInteractionEnabled:NO]; 
+0

Это означало бы, что ни верхнее окно, ни окно позади будет получать какое-либо событие взаимодействия с пользователем, не так ли? – jboi

+1

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

0

Вы сможете принимать события касания только на одном UIWindow за раз. UIWindow, который принимает события, называется keyWindow.

[behindWindow makeKeyAndVisible]; 

Ваш план UIWindow будет оставаться видимым, но ваш behindWindow будет получать события.

+0

Но тогда только ключевое окно могло бы получить пользовательское взаимодействие, верно? Что, если у меня есть элементы интерфейса в обоих окнах, которые нуждаются в взаимодействии? – jboi

+0

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

+0

передние окна продолжают получать события – user2387149

Смежные вопросы