当我在屏幕上拖动uiimageview时,我的问题就出现了,它被设置为只能在x轴方向上拖动。 代码类型的工作。 uiimageview正在移动,它仅限于x轴,这正是它应该的样子。 但是当你开始在uiimageview的框架外拖动时,它会停止沿着我的手指移动。
这与此方法无关:CGRectContainsPoint。 请记住,在我的代码中这是非常必要的,因为我只想让uiimageview移动,当用户将其设置在它上面时。
如果我没有使用此方法CGRectContainsPoint,即使用户手指不接触图像,图像仍会移动。任何有关这方面的工作都非常感谢。
这是我的代码:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"Touches Moved is running");
UITouch *touch = [[event allTouches] anyObject];
CGPoint location = [touch locationInView:self.view];
if (CGRectContainsPoint(UIImageView, location) && UIImageView >= 40)
{
NSLog(@"Contains Point UIImageView Center!");
CGPoint xLocation = CGPointMake(location.x,UIImageView);
UIImageView = xLocation;
//here it comes.. big block of code//
if (location.x <= 40) {
NSLog(@"Start Dragging Point");
CGPoint newLocation = CGPointMake(40
, 402);
UIImageView = newLocation;
}
else if(location.x >= 273) {
NSLog(@"End Dragging Point");
CGPoint newLocation = CGPointMake(273
, 402);
UIImageView = newLocation;
}
}
答案 0 :(得分:0)
将CGRectContainsPoint(UIImageView, location)
从-(void)touchesMoved:...
移至-(void)touchesBegan:...
。
只在您开始触摸视图内部时,在那里设置一个指向视图的ivar。使用-(void)touchesMoved:...
中的这个ivar来无限移动视图。然后,您可以在-(void)touchesEnded:...
和-(void)touchesCancelled:...
中取消设置此变量。