由于各种原因,我已将这些方法从UIView子类移到我的viewcontroller。我终于搞定了,除了一件事。我不仅可以拖动以编程方式创建的UIImageviews,但实际的视图控制器视图也可以拖动。造成这种不良影响。我猜这是触及anyobject的事实,而背景本身就是一个对象。我只是不确定如何排除背景。我会认为它需要“UserInteraction启用”,但我猜不是?我只希望它使UIImageView可拖动。请原谅我的noobness。我还在学习。touchesbegan,touchesmoved,touchesended问题
我有一个名为“letterDictionary”的NSMutableDictionary中的所有图像我想要“可触摸”。是否有可能只适用于字典中的内容?
- (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;
}
,完美的工作!我应该知道这样做!出于好奇,但是,你或者有人告诉我如何将它添加到我的NSMutableDictionary中的对象(UIImageViews)? – Jason
请参阅http://stackoverflow.com/questions/4073598/user-interaction-on-a-uiimageview – cdasher