Задача C: Область Падения - PullRequest
0 голосов
/ 12 января 2012

Я пытаюсь создать область перетаскивания предмета, и когда предмет упадет не в ту область, он вернется в исходное положение.

вот мой код:

UITouch *touch =[[event allTouches] anyObject];
    CGPoint dropPoint = CGPointMake(60, 520);
    location = [touch locationInView:self.view];


if([touch view]==image1 && CGPointEqualToPoint(location, dropPoint)){
   [image1 setFrame:CGRectMake(60, 520, 150, 184)];
    return;
} else
{
    [dad setFrame:CGRectMake(530, 225, 150, 184)];
}

Я думаю, что моя ошибка в том, что я использовал CGPoint для области перетаскивания, и он должен быть точно в той позиции, которую я объявил ранее, если запускает команды, я прав?

Теперь я незнать, как это исправить ...

Заранее спасибо за помощь!:)

Ответы [ 2 ]

0 голосов
/ 12 января 2012

Поскольку CGPoint принимает CGFloats (что означает, что местоположение должно быть настолько точным, что я не думаю, что большинство пользователей могут сделать это), я думаю, что это проблема dropPoint.Одним из решений является создание области перетаскивания с использованием CGRect и сравнение с использованием:

CGRectContainsPoint(dropRect, location);

Обратите внимание, что сравнение:

[touch view] == image1

Вернет true, если два указателя указывают на один и тот же объект (также, если вы знаете, что свойство представления UITouches возвращает исходное представление, в котором произошло касание, а не текущее представление.

0 голосов
/ 12 января 2012

Эта строка

[touch view]==image1

сравнивает указатели, а не объекты, на которые они указывают. Это может быть вашей проблемой. Простое решение - использовать свойство tag для UIView s, чтобы отслеживать, какое изображение в данный момент является view для touch.

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