2014-10-28 136 views
2

我在屏幕上有兩個UIWindows,一個在另一個之後。 有沒有辦法處理用戶觸摸與後面的窗口?禁用窗口交互iOS

謝謝

回答

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 2016-09-06 17:38:18

+1

我不這麼認爲。如果禁用用戶交互,它不會吃掉觸摸,而是忽略它。所以你的觸摸應該扔到它下面的窗口。 – 2016-09-06 18:04:52

0

您一次只能在一個UIWindow上接受觸摸事件。接受事件的UIWindow稱爲keyWindow

[behindWindow makeKeyAndVisible]; 

你的前景UIWindow將仍然可見,但你的behindWindow將接收事件。

+0

但是隻有關鍵窗口可以接收用戶交互,對吧?什麼,如果我在兩個需要交互的窗口上都有UI元素? – jboi 2016-09-06 17:39:26

+0

您一次只能在一個窗口上接受觸摸事件。總是有一個關鍵窗口:這是接受觸摸事件的唯一窗口。通過使用此答案中顯示的方法,您告訴系統使用不同的密鑰窗口。 – 2016-09-06 18:12:33

+0

前臺窗口不斷收到事件 – user2387149 2016-10-07 18:44:37