触摸功能调用功能

时间:2012-07-30 14:53:35

标签: objective-c ios ipad

我目前正在开发一款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,但这仍然令我感到烦恼。

1 个答案:

答案 0 :(得分: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”,表示它找不到你的“ - (void)startGameWithLevelID:(NSString *)pLevelID”方法

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