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