iPhone SDK: Problema Arrastar um UIImageView
-
19-09-2019 - |
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 É.
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