Проблема перетаскиваемых карт (сенсорного перечисления) - PullRequest
1 голос
/ 09 августа 2009

Я пытаюсь позволить игроку нажать, перетащить и выпустить карту из разнесенной стопки на экране в поле 4х4 на доске. Мои карты создаются из пользовательского класса, который наследуется от класса 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. Есть ли в любом случае, я могу только перечислить объекты, которые находятся прямо под пальцем игрока, и явно отключить реагирование других объектов?

Спасибо!

1 Ответ

0 голосов
/ 10 августа 2009

Из вашего описания: "Как получить сенсорную логику, чтобы запретить перетаскивание других карт?" кажется, будто твой палец подобен магниту, собирающему карты, когда ты тянешь его?!? В частности, я не сталкивался с этим, но, поместив обработку событий в класс вашей карты, вы можете заставить каждую карту решать, должна ли она реагировать на прикосновение или передавать свою цепочку респондента другой, которая это делает.

Я думаю, вам следует ознакомиться с разделом Руководства по программированию приложений iPhone по обработке событий. В частности, глава Объекты ответчика и цепочка ответчика .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...