1
私はSOの別の紳士のこのコードを採用しました。これまでのところうまくいっていますが、私のアプリではかなりの数の画像ビュー/ボタンを移動する予定です。これを実装する最良の方法は何でしょうか?おそらくオブジェクトを配列に配置し、列挙子を使用しますか?他の誰かが似たようなことをやったことがあるなら、正しい方向への動きは非常に高く評価されます!ところで は、彼らはすべてのビュー内でこの質問を読むために時間を割いてiPadアプリ内でのドラッグ&ドロップ
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(dragGesture:)];
[dragImage addGestureRecognizer:panGesture];
[dragImage setUserInteractionEnabled:YES];
}
#pragma mark -
#pragma mark UIPanGestureRecognizer selector
- (void) dragGesture:(UIPanGestureRecognizer *) panGesture{
CGPoint translation = [panGesture translationInView:self.view];
switch (panGesture.state) {
case UIGestureRecognizerStateBegan:{
originalCentre = dragImage.center;
}
break;
case UIGestureRecognizerStateChanged:{
dragImage.center = CGPointMake(dragImage.center.x + translation.x,
dragImage.center.y + translation.y);
}
break;
case UIGestureRecognizerStateEnded:{
if (((dragImage.center.x >= 280) && (dragImage.center.y >= 280) &&
(dragImage.center.x <= 450) && (dragImage.center.y <= 450))) {
dragImage.center = CGPointMake(300, 300);
[dragImage setUserInteractionEnabled:NO];
break;
}
[UIView animateWithDuration:0.5
animations:^{
dragImage.center = originalCentre;
}
completion:^(BOOL finished){
}];
}
break;
default:
break;
}
[panGesture setTranslation:CGPointZero inView:self.view];
}
-(IBAction)clear{
[UIImageView animateWithDuration:0.5 animations:^{
dragImage.center = CGPointMake(100, 200);
}];
[dragImage setUserInteractionEnabled:YES];
}
感謝を異なる座標を持つことになります。
@Ashありがとうございます。 recognizer.viewで各dragImageを変更することを意味しますか? –
実際、申し訳ありませんが、私は嘘をつきました。このメソッドでは、drawImage'の 'frame'を動かしています。ユーザーの指がどのような表示になっていても、移動するには、それを変更する必要があります。または、移動する各ビューに複数のジェスチャ認識ツールを添付することもできます。 –