2013年6月18日 星期二

多UIView間touch事件傳值

原本是用一個delegate去選擇touch要停留在那一個UIView回應,
後來發現下面這個方式更好,你可以隨意選擇你要按那一個UIView甚至可以同時觸發二個以上!

把要touch事件trigger寫在UIViewController中,如下面三個function,
然後把要觸發的UIView都加到這個UIViewController中,用下列方式呼叫,
這樣的好處是也可以對父類別的touch事件做呼叫

// Pass touches on to the AR view (EAGLView)
- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
{
  
    // pass events down to parent ViewController
    // super是用來呼叫父類別的方法
    [super touchesBegan:touches withEvent:event];

    // 對自己view做匯入,之後以自己收到的touch去呼叫view的touch事件
    [arViewController.arView touchesBegan:touches withEvent:event];
}


- (void)touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event
{
    [arViewController.arView touchesEnded:touches withEvent:event];
}


- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    // Implemented only to prevent the super class methods from executing
}

// 在使用這個方式前,記得在其他view加入下面指令,以確保touch事件都能直接觸到parientViewController
        self.userInteractionEnabled = NO;

沒有留言:

張貼留言