Pergunta

Eu estou tentando arrastar um UIImageView em torno de tela do iPhone em meu aplicativo.

Atualmente, a funcionalidade de arrastar tenho posto é bom e arrastando a imagem faz movê-lo ao redor da tela, o problema é que você não tem que arrastar a visualização da imagem para movê-lo, você também pode arrastar qualquer lugar na tela e ele vai mover a imagem. Eu sou novo para esta plataforma, então não posso realmente pensar sobre o que fazer para resolver esta questão. Meu código atual para arrastar a imagem é:

 - (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
    CGPoint pt = [[touches anyObject] locationInView:pig];
    startLocation = pt;


}
- (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event {
    CGPoint pt = [[touches anyObject] locationInView:pig];
    CGRect frame = [pig frame];
    frame.origin.x += pt.x - startLocation.x;
    frame.origin.y += pt.y - startLocation.y;
    [pig setFrame: frame];
}

Qualquer ajuda apreciado. Pela maneira porco é o UIImageView. Também tenho notado que se eu definir a interação do usuário da Visão "porco" para habilitado a imagem já não é arrastar capaz, mas quando não é definido como habilitado É.

Foi útil?

Solução

Você pode tentar a subclasse UIImageView e implementar touchesBegan: e touchesMoved: nele diretamente. Então, em InterfaceBuilder selecionar sua subclasse para o UIImageView.

alt texto http://img.skitch.com/20090728-xetretcfubtcj7ujh1yc8165wj.jpg

Oh sim, agora você precisará definir a interação do usuário de novo ...

Outras dicas

Você precisa colocá-lo entre begin / commit seqüências de animação, pelo menos em seu segmento temporizador:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.02]  /* 0.02 seconds suration*/

/* move pig coordinates here */

[UIView commitAnimations];

Salvar o novo movimento em touchesMoved e depois processá-los no segmento de timer.

Você pode usar uma categoria de UIView para torná-lo arrastado e definir a área draggable: https://github.com/rtoshiro/TXDragAndDrop

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top