可拖动图像ios的边界

可拖动图像ios的边界,ios,draggable,uitouch,boundary,Ios,Draggable,Uitouch,Boundary,我试图创建一个可拖动的图像,但我试图将其拖动限制在一个小正方形内,而不是全屏。谁能告诉我哪里出了问题吗?。我已经将我目前掌握的代码放在下面: -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{ UITouch *touch = [[event allTouches] anyObject]; if([touch view] == dot) { CGPoint location = [tou

我试图创建一个可拖动的图像,但我试图将其拖动限制在一个小正方形内,而不是全屏。谁能告诉我哪里出了问题吗?。我已经将我目前掌握的代码放在下面:

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    UITouch *touch = [[event allTouches] anyObject];
    if([touch view] == dot) {
        CGPoint location = [touch locationInView:self.view];
        dot.center = location;
        if (location.x >10) {
            location.x =10;
        } else if (location.x <10) {
            location.x = 10;
        }
        if (location.y >20) {
            location.y =20;
        } else if (location.y < 20) {
            location.y = 20;
        }      
    }
}
-(无效)触摸移动:(NSSet*)触摸事件:(UIEvent*)事件{
UITouch*touch=[[event AllTouchs]anyObject];
如果([触摸视图]==点){
CGPoint location=[触摸位置视图:self.view];
圆心=位置;
如果(位置x>10){
位置x=10;
}否则,如果(位置x 20){
位置y=20;
}否则如果(位置y<20){
位置y=20;
}      
}
}

我最近实现了这样的图像拖动功能。我使用平移手势移动图像,这会导致两个CGfloat“endPointX和endPointY”。在下面的代码中,在注释“停留在屏幕上检查”和“结束停留在屏幕上检查”之间,我检查这些是否在屏幕上。如果没有,我会调整它们以防止图像从屏幕上移开

我希望这有帮助。如果您想在整个屏幕的一小部分内移动图像,那么我会将图像添加到holder子视图中,然后检查上面的holder view.bounds.size.width/height

CGFloat endPointX = translatedPoint.x + (.35*[(UIPanGestureRecognizer*)sender 
velocityInView:self.view].x);

CGFloat endPointY = translatedPoint.y + (.35*[(UIPanGestureRecognizer*)sender velocityInView:self.view].y);

// Stay on the screen check

if(endPointX < 0) {

    endPointX = 0;

} else if(endPointX > self.view.bounds.size.width) { 

    endPointX = self.view.bounds.size.width;            

}

if(endPointY < 0) {

    endPointY = 0;

} else if(endPointY > self.view.bounds.size.height) {               

    endPointY = self.view.bounds.size.height; 

}

// End of the Stay on Screen check

[UIView beginAnimations:nil context:NULL];

[UIView setAnimationDuration:.35];

[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];

[[sender view] setCenter:CGPointMake(endPointX, endPointY)];

[UIView commitAnimations];
CGFloat endPointX=translatedPoint.x+(.35*[(UIPangestureRecognitor*)发送方
VelocityView:self.view].x);
CGFloat endPointY=translatedPoint.y+(.35*[(UIPangestureRecognitizer*)发送方速度视图:self.view].y);
//停留在屏幕上检查
如果(端点x<0){
端点x=0;
}else如果(endPointX>self.view.bounds.size.width){
endPointX=self.view.bounds.size.width;
}
如果(端点<0){
端点y=0;
}else如果(endPointY>self.view.bounds.size.height){
endPointY=self.view.bounds.size.height;
}
//屏幕停留检查结束
[UIView beginAnimations:nil上下文:NULL];
[UIView setAnimationDuration:.35];
[UIView设置动画曲线:UIViewAnimationCurveEaseOut];
[[sender view]设置中心:CGPointMake(endPointX,endPointY)];
[UIView委员会];

我最近实现了这样的图像拖动功能。我使用平移手势移动图像,这会导致两个CGfloat“endPointX和endPointY”。在下面的代码中,在注释“停留在屏幕上检查”和“结束停留在屏幕上检查”之间,我检查这些是否在屏幕上。如果没有,我会调整它们以防止图像从屏幕上移开

我希望这有帮助。如果您想在整个屏幕的一小部分内移动图像,那么我会将图像添加到holder子视图中,然后检查上面的holder view.bounds.size.width/height

CGFloat endPointX = translatedPoint.x + (.35*[(UIPanGestureRecognizer*)sender 
velocityInView:self.view].x);

CGFloat endPointY = translatedPoint.y + (.35*[(UIPanGestureRecognizer*)sender velocityInView:self.view].y);

// Stay on the screen check

if(endPointX < 0) {

    endPointX = 0;

} else if(endPointX > self.view.bounds.size.width) { 

    endPointX = self.view.bounds.size.width;            

}

if(endPointY < 0) {

    endPointY = 0;

} else if(endPointY > self.view.bounds.size.height) {               

    endPointY = self.view.bounds.size.height; 

}

// End of the Stay on Screen check

[UIView beginAnimations:nil context:NULL];

[UIView setAnimationDuration:.35];

[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];

[[sender view] setCenter:CGPointMake(endPointX, endPointY)];

[UIView commitAnimations];
CGFloat endPointX=translatedPoint.x+(.35*[(UIPangestureRecognitor*)发送方
VelocityView:self.view].x);
CGFloat endPointY=translatedPoint.y+(.35*[(UIPangestureRecognitizer*)发送方速度视图:self.view].y);
//停留在屏幕上检查
如果(端点x<0){
端点x=0;
}else如果(endPointX>self.view.bounds.size.width){
endPointX=self.view.bounds.size.width;
}
如果(端点<0){
端点y=0;
}else如果(endPointY>self.view.bounds.size.height){
endPointY=self.view.bounds.size.height;
}
//屏幕停留检查结束
[UIView beginAnimations:nil上下文:NULL];
[UIView setAnimationDuration:.35];
[UIView设置动画曲线:UIViewAnimationCurveEaseOut];
[[sender view]设置中心:CGPointMake(endPointX,endPointY)];
[UIView委员会];

在更改位置之前,您正在分配位置

首先将您的限制应用于
位置
,然后将其分配给

此外,你显示的限制将把你的位置锁定在10,20,因为你不允许它大于10或小于10。20岁也一样

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    UITouch *touch = [[event allTouches] anyObject];
    if([touch view] == dot) {
        CGPoint location = [touch locationInView:self.view];
        location.x = MIN(MAX(location.x, 0),10);
        location.y = MIN(MAX(location.y, 0),20);
        dot.center = location;     
    }
}

在对位置进行更改之前,您正在分配位置

首先将您的限制应用于
位置
,然后将其分配给

此外,你显示的限制将把你的位置锁定在10,20,因为你不允许它大于10或小于10。20岁也一样

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    UITouch *touch = [[event allTouches] anyObject];
    if([touch view] == dot) {
        CGPoint location = [touch locationInView:self.view];
        location.x = MIN(MAX(location.x, 0),10);
        location.y = MIN(MAX(location.y, 0),20);
        dot.center = location;     
    }
}

那么当你拖动时会发生什么呢?我可以在屏幕上拖动它,而不是在我指定的范围内。然后,可拖动图像可以从屏幕上/导航栏/选项卡栏下消失。我如何将它限制在一个小正方形内?那么当你拖动时会发生什么?我可以在屏幕上拖动它,而不是在我指定的范围内。然后,可拖动图像可以从屏幕上/导航栏/选项卡栏下消失。如何将其限制在一个小正方形内?谢谢你的回答,但我不知道如何使用平移手势识别器。谢谢你的回答,但我不知道如何使用平移手势识别器。谢谢,这对我帮助很大。谢谢,这对我帮助很大。