2014-03-27 3 views
1

эй, ребята, мне было интересно, не было ли у вас объекта, такого как UIImageView, перетаскиваемого. Я отдаю себе отчет в UITouch и прикосновения, то естьКак сделать объект перетаскиваемым?

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *drag=[[event allTouches] anyObject]; 
    player.center=[drag locationInView:self.view]; 
} 

, но таким образом, что это возможно, для пользователя, чтобы объект прыгать по экрану, где он или она прикасается к экрану, но я хочу, чтобы пользователь должен вручную перетащите объект по экрану.

пожалуйста, объясните с кодом и дайте мне знать, если я должен быть более конкретным и ясным ...

ответ

1

Вы можете сделать это:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 

    UITouch *aTouch = [touches anyObject]; 
    CGPoint location = [aTouch locationInView:self.view]; 

    if(CGRectContainsPoint(self.playerView.frame,location)) { 
     [UIView beginAnimations:@"Dragging A DraggableView" context:nil]; 
     self.playerView.center = location; 
     [UIView commitAnimations]; 
    } 

} 

Это должно дать вам плавную анимацию.

+0

Thnx это сделало трюк ... – vink007

+0

Отметьте как ответ, если он сработает пожалуйста :-) Счастливое кодирование. – CW0007007

1

, если вы хотите, чтобы пользователь перетащить & падение, сначала вы должны проверить, если прикосновение внутри ImageView прямоугольная рамка. Чтобы улучшить работу пользователя, вы можете обнаружить смещение касания от центра просмотра изображений; Хорошее место для этого - внутри the touchesBegan:withEvent:. После этого, вы должны изменить положение ImageView, как это:

CGPoint touchOffset; //insert this inside your interface private iVars 
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch *drag=[[event allTouches] anyObject]; 
    CGPoint touchLocation = [drag locationInView:self.view]; 
    touchOffset = CGPointMake(player.center.x-touchLocation.x,player.center.y-touchLocation.y) 
    if(CGRectContainsPoint(player.frame,touchLocation) 
     player.center = CGPointMake(touchLocation.x+touchOffset.x,touchLocation.y+touchOffset.y); 
} 
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *drag=[[event allTouches] anyObject]; 
    CGPoint touchLocation = [drag locationInView:self.view]; 
    if(CGRectContainsPoint(player.frame,touchLocation) 
     player.center = CGPointMake(touchLocation.x+touchOffset.x,touchLocation.y+touchOffset.y); 
} 

P.S. - В следующий раз попробуйте поискать похожие вопросы ...

0
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 

    UITouch* aTouch = [touches anyObject]; 
    UIView* aView = [aTouch view]; 
    if (aView != self.view) { 
     [self.view bringSubviewToFront:aView]; 
    } 
} 

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 

    UITouch* aTouch = [touches anyObject]; 
    UIView* aView = [aTouch view]; 
    if (aView != self.view) { 
     aView.center = [aTouch locationInView:self.view]; 

    } 
} 
Смежные вопросы