У меня на экране есть два интерфейса UIWindows, а один - за другим. Есть ли способ справиться с прикосновением пользователя к окну, которое находится позади?Отключить взаимодействие окон iOS
Благодаря
У меня на экране есть два интерфейса UIWindows, а один - за другим. Есть ли способ справиться с прикосновением пользователя к окну, которое находится позади?Отключить взаимодействие окон iOS
Благодаря
Спасибо, но я только что нашел способ:
- (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;
}
Вы просто должны быть в состоянии вывести его из строя, как и любой UIView.
UIWindow *secondWindow = [[UIWindow alloc] initWithFrame:<#frame#>];
[secondWindow setUserInteractionEnabled:NO];
Вы сможете принимать события касания только на одном UIWindow
за раз. UIWindow
, который принимает события, называется keyWindow
.
[behindWindow makeKeyAndVisible];
Ваш план UIWindow
будет оставаться видимым, но ваш behindWindow
будет получать события.
Но тогда только ключевое окно могло бы получить пользовательское взаимодействие, верно? Что, если у меня есть элементы интерфейса в обоих окнах, которые нуждаются в взаимодействии? – jboi
Вы можете принимать события касания только в одном окне за раз. Всегда есть ключевое окно: это одно и только окно, которое принимает события касания. Используя метод, показанный в этом ответе, вы сообщаете системе использовать другое ключевое окно. –
передние окна продолжают получать события – user2387149
Это означало бы, что ни верхнее окно, ни окно позади будет получать какое-либо событие взаимодействия с пользователем, не так ли? – jboi
Я так не верю. Если вы отключите взаимодействие с пользователем, он не поедает прикосновения, а игнорирует его. Итак, ваши прикосновения должны бросить его в окно под ним. –