2012-07-30 51 views
0

我目前正在研究一个iPad应用程序,并希望对我的视图控制器进行函数调用,以便将对象移动到某个位置的事件切换视图。在“touchesMoved”和“touchesEnded”中,我尝试在视图控制器中调用一个函数来切换视图,如果一个对象被拖动到某个位置,但函数似乎永远不会被调用。例如,“touchesEnded”非常简单,只是调用视图控制器,消息在touchesEnded内部记录,但不在应该被调用的视图控制器的函数内部。我尝试着进入调试器的功能,但它似乎只是跨过它。函数调用触摸函数

从视图 *注意m_pJupiter是一个UIImageView,m_pLevelID是一个NSString,而m_pMyVC是我的自定义视图控制器类的一个实例。

- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    if (m_pJupiter.center.x >= (m_pDest.center.x - 25)) 
    { 
     NSLog(@"Calling beginGameWithLevelID"); 
     [m_pMyVC startGameWithLevelID: m_pLevelID]; 
    } 
} 

视图控制器的功能

- (void) startGameWithLevelID:(NSString*)pLevelID 
{ 
    NSLog(@"MyViewController - beginGameWithLevelID"); 
    // The logic for switching views, etc 
} 

第一个日志消息总是显示出来,但在一个视图控制器从来不会。我想更糟的是我会用一个自定义的UISlider,但是这让我感到困惑。

+0

isUserInteractionEnabled?当您调用该方法时, – RolandasR 2012-07-30 14:57:36

+0

是您在内存中的视图控制器吗? – 2012-07-30 15:12:50

回答

1
- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    if (m_pJupiter.center.x >= (m_pDest.center.x - 25)) 
    { 
     NSLog(@"111"); 
     if([m_pMyVC respondsToSelector:@selector(startGameWithLevelID:)]) 
     { 
      NSLog(@"222"); 
      [m_pMyVC startGameWithLevelID: m_pLevelID]; 
     } 

    } 
} 

- (void) startGameWithLevelID:(NSString*)pLevelID 
{ 
    NSLog(@"333"); 
    // The logic for switching views, etc 
} 

如果输出仅仅是 “111”,表明它无法找到你的 “ - (空)startGameWithLevelID:(的NSString *)pLevelID” 方法

如果输出为 “111”,“222 “,也许你的xcode有问题,重新打开它

+0

好吧,这很有帮助,因为它表示类不响应选择器,这很奇怪,因为“startGameWithLevelID”是该类的一部分。 – riqitang 2012-07-30 17:48:02

+0

它不响应选择器,因为类中的视图控制器实例在创建过程中从未分配过。修好了,现在效果很好,谢谢。 – riqitang 2012-07-30 18:04:47