По разным причинам я переместил эти методы из подкласса UIView в мой viewcontroller.И, наконец, я заработал, за исключением одной вещи.Я не только могу перетаскивать UIImageviews, которые я программно создал, но и фактическое представление контроллеров представления также перетаскивается.Создание этого нежелательного эффекта.Я думаю, это тот факт, что он касается любого объекта, а сам фон является объектом.Я просто не уверен, как исключить фон.Я бы подумал, что для этого потребуется «UserInteraction включено», но я не думаю, что?Я только хочу, чтобы UIImageViews перетаскивали.Пожалуйста, прости мою нубизм.Я еще учусь.
У меня есть все изображения, которые я хотел бы "touchable" в NSMutableDictionary под названием "letterDictionary".Будет ли возможно только прикосновение к тому, что в словаре?
http://imgur.com/W08dI
- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
UITouch *touch = [touches anyObject];
touchPoint = [touch locationInView:self.view];
movingLetter = [touch view];
CGPoint pointInside = [touch locationInView:[touch view]];
if ([movingLetter pointInside:pointInside withEvent:event]) touchedInside = YES;
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
if (touchedInside) {
UITouch *touch = [touches anyObject];
CGPoint newPoint = [touch locationInView:self.view]; // get the new touch location
movingLetter.center = CGPointMake(movingLetter.center.x + newPoint.x - touchPoint.x, movingLetter.center.y + newPoint.y - touchPoint.y);
touchPoint = newPoint;
}
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
if (touchedInside) {
UITouch *touch = [touches anyObject];
CGPoint newPoint = [touch locationInView:self.view];
movingLetter.center = CGPointMake(movingLetter.center.x + newPoint.x - touchPoint.x, movingLetter.center.y + newPoint.y - touchPoint.y);
if (CGRectIntersectsRect([movingLetter frame], [placeHolder frame]))
{
movingLetter.center = placeHolder.center;
}
}
touchedInside = NO;
}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
touchedInside = NO;
}