При перемещении -touchesBegan & touchesMoved кода в класс представления лица, а не вид/или класса ViewController он находится в в настоящее время, тогда эти мнения могут обрабатывать штрихи независимо друг от друга и одновременно.
Редактировать: Дополнительная информация: В настоящее время вы обрабатываете события касаний (в том, что я предполагаю UIViewController), используя код, вставленный выше, если вы перенесли этот код в свой класс Person, который вы создали, вы можете сделать код проще и добиться желаемого результата. Это приведет к тому, что Человек решит, будет ли он затронут и где и будет двигаться соответственно.
В файле Person.m добавить этот код,
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [[event allTouches] anyObject];
CGPoint location = [touch locationInView:self.superview];
[self moveToLocation:location];
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [[event allTouches] anyObject];
CGPoint location = [touch locationInView:self.superview];
[self moveToLocation:location];
}
-(void)moveToLocation:(CGPoint)location{
CGFloat halfOfPersonWidth = self.bounds.size.width /2.0f;
CGFloat halfOfSuperviewWidth = self.superview.bounds.size.width/2.0f;
// Stop Person from going off left screen edge
if ((location.x - halfOfPersonWidth) <= 0.0f){
return;
} // Stop Person from going off right screen edge
else if ((location.x + halfOfPersonWidth) >= self.superview.bounds.size.width){
return;
}
if (self.center.x < halfOfSuperviewWidth) {
// Person is on the left of the screen and should not move to right side
if ((location.x + halfOfPersonWidth) > halfOfSuperviewWidth) {
return;
}
} else{
// Person is on the right of the screen and should not move to left side
if ((location.x - halfOfPersonWidth) < halfOfSuperviewWidth) {
return;
}
}
// If we have made it this far then we can move the Person
// move to touch location on x axis only
[self setCenter:CGPointMake(location.x, self.center.y)];
}
Теперь в вашем классе View Controller вы можете удалить оригинальный -touchesBegan & -touchesMoved код, который вы вставили здесь, или просто закомментировать, если вы хочу быть осторожным
/* put slash asterisks above the code and asterisks slash below the code to comment out */
Если вы построить и запустить вы должны быть в состоянии переместить каждый вид Person вокруг, как и раньше, но если вы поместите палец на каждом виде Людей в то же время вы должны быть в состоянии переместить их одновременно ,
У меня такая же проблема с этим кодом, как и с моим исходным кодом. Я попытался переделать свой подход к кодированию моего механика, но я не могу понять, как заставить объекты двигаться одновременно, спасибо за ваш вклад, но – user3795419
@ user3795419, так что происходит, когда вы начинаете делать несколько штрихов? не могли бы вы описать? код должен работать ... спасибо – DaTa
Я могу только переместить один из объектов сразу. Когда я пытаюсь перемещать оба объекта одновременно, проталкивая пальцы по выделенным областям, только один из них перемещается – user3795419