可拖动卡(触摸枚举)问题

时间:2009-08-08 21:13:11

标签: iphone objective-c cocoa-touch

我试图让一个玩家点击,将一张卡从屏幕上的扇形堆栈中拖出并释放到主板上的4x4字段。我的卡是从继承自UIImageView类的自定义类实例化的。

我开始使用Touches示例应用程序,我修改了事件处理程序以进行触摸,以迭代我的玩家的牌手而不是3个方格,示例应用程序允许您在屏幕上移动。一切正常,直到那时,我移动卡片我在另一张卡片附近拖动。我真的在这里画一个空白的逻辑,以使卡行为正常。这是我的代码:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{
NSUInteger numTaps = [[touches anyObject] tapCount];
if(numTaps = 1) {
    for (UITouch *touch in touches) {
        [self dispatchFirstTouchAtPoint:[touch locationInView: self.boardCardView] forEvent:nil];
        }   
    }
}

-(void) dispatchFirstTouchAtPoint:(CGPoint)touchPoint forEvent:(UIEvent *)event
{
    for (int i = 0; i<5; i++)
    {
        UIImageView *touchedCard = boardBuffer[i];
        if (CGRectContainsPoint([touchedCard frame], touchPoint)) {
            [self animateFirstTouchAtPoint:touchPoint forView:touchedCard];
        }
    }
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{  
    NSUInteger touchCount = 0;
    for (UITouch *touch in touches){
        [self dispatchTouchEvent:[touch view] toPosition:[touch locationInView:self.boardCardView]];
        touchCount++;
    }       
}

我的问题是:

  1. 如何让触控逻辑禁止拖动手指拾取其他卡?

  2. 无论如何,我只能枚举玩家手指正下方的对象并明确禁止其他对象响应?

  3. 谢谢!

1 个答案:

答案 0 :(得分:0)

根据您的描述,“如何让触控逻辑禁止其他卡被拖动手指拾取?”看起来好像你的手指像磁铁一样捡起卡片,你拖着它?!?具体来说,我没有遇到过这种情况,但是通过将事件处理放入卡片类中,您可以让每张卡片决定是否应该响应触摸或将响应器链传递给另一个卡片。

我认为您应该查看有关事件处理的iPhone应用程序编程指南部分。特别是关于Responder Objects and the Responder Chain的章节。