我有兩個視圖控制器同時使用視圖控制器遏制出現在屏幕上,實現與蘋果的代碼示例相同。調用它們視圖控制器A(vcA)和視圖控制器B(vcB)以及容器視圖控制器(containerVC)。如何跟蹤兩個UIViewcontrollers之間的UITouches? (使用遏制)
每個vcA和vcB都有一個對象網格,我希望能夠將對象從vcA拖到vcB。更具體地說,我想要在vcB中觸發一次觸發vcB中的touchesMoved:withEvent方法,一旦它位於邊界vcB內。
我已經覆蓋了touchesMoved:在containerVC withEvent方法,跟蹤通過點擊測試觸摸,並試圖轉發觸摸下 UIView的層次結構如下所示:
// in the containerVC
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
CGPoint locationPoint = [[touches anyObject] locationInView:self.view];
UIView* touchIsInViewControllerA = [vcA hitTest:locationPoint withEvent:event];
if (touchIsInViewControllerA) {
NSLog(@"Touch is in vcA");
return;
}
UIView* touchIsInViewControllerB = [vcB hitTest:locationPoint withEvent:event];
if (touchIsInViewControllerB) {
NSLog(@"Touch is in vcB");
[vcB touchesMoved:touches withEvent:event]; // this causes a crash
}
}
這似乎是遞歸,containerVC將觸摸事件按下層次結構,然後vcB將觸摸事件傳遞迴層次結構。
我的問題:有沒有辦法讓vcB將touch事件傳回給containerVC的響應器鏈?或者我應該以一種不同的方式實現 - 使vcB成爲vcA的代表,並讓containerVC脫離等式?
注:我猜共同應對將放棄VC容納圖案,並保持它在同一個視圖控制器,但是在這個例子中未顯示的原因,我覺得讓他們分開工作會更好我 - 除非它是完全瘋狂和超級哈克這樣做...