[解決済み] UIPanGestureRecognizerを使ってオブジェクトを移動させるには? iPhone/iPad
2023-07-09 16:40:34
質問
の例がいくつかあります。
UIPanGestureRecognizer
クラスがあります。例えば、私が読んだことのある
この
を読みましたが、まだ使えません。
私が作業しているnibファイルには
UIView
(画像上の白い四角形) があり、このクラスでドラッグしたいのです。
で、.m ファイルに配置しました。
- (void)setTranslation:(CGPoint)translation inView:(UIView *)view
{
NSLog(@"Test to see if this method gets executed");
}
でマウスをドラッグしても、そのメソッドは実行されません。
UIView
. 配置も試してみました。
- (void)pan:(UIPanGestureRecognizer *)gesture
{
NSLog(@"testing");
}
そして、このメソッドも実行されません。もしかしたら私が間違っているかもしれませんが、このメソッドは
- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
メソッドのように、タッチがあるたびにそのメソッドが呼び出されるようにする必要があります。
私は何を間違えているのでしょうか?多分、私はそのメソッドへの接続を描画する必要がありますか?もしそうなら、どのようにそれを行うことができますか?
どのように解決するには?
私はチュートリアルを見つけました UIGestureRecognizersの使用方法 を見つけ、そしてそれは私が探しているものだと思います。 それは私が次のソリューションを考え出すのに役立ちました。
-(IBAction) someMethod {
UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)];
[panRecognizer setMinimumNumberOfTouches:1];
[panRecognizer setMaximumNumberOfTouches:1];
[ViewMain addGestureRecognizer:panRecognizer];
[panRecognizer release];
}
-(void)move:(UIPanGestureRecognizer*)sender {
[self.view bringSubviewToFront:sender.view];
CGPoint translatedPoint = [sender translationInView:sender.view.superview];
if (sender.state == UIGestureRecognizerStateBegan) {
firstX = sender.view.center.x;
firstY = sender.view.center.y;
}
translatedPoint = CGPointMake(sender.view.center.x+translatedPoint.x, sender.view.center.y+translatedPoint.y);
[sender.view setCenter:translatedPoint];
[sender setTranslation:CGPointZero inView:sender.view];
if (sender.state == UIGestureRecognizerStateEnded) {
CGFloat velocityX = (0.2*[sender velocityInView:self.view].x);
CGFloat velocityY = (0.2*[sender velocityInView:self.view].y);
CGFloat finalX = translatedPoint.x + velocityX;
CGFloat finalY = translatedPoint.y + velocityY;// translatedPoint.y + (.35*[(UIPanGestureRecognizer*)sender velocityInView:self.view].y);
if (finalX < 0) {
finalX = 0;
} else if (finalX > self.view.frame.size.width) {
finalX = self.view.frame.size.width;
}
if (finalY < 50) { // to avoid status bar
finalY = 50;
} else if (finalY > self.view.frame.size.height) {
finalY = self.view.frame.size.height;
}
CGFloat animationDuration = (ABS(velocityX)*.0002)+.2;
NSLog(@"the duration is: %f", animationDuration);
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:animationDuration];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidFinish)];
[[sender view] setCenter:CGPointMake(finalX, finalY)];
[UIView commitAnimations];
}
}
関連
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] 私のアプリケーションは「暗号を含む」のでしょうか?
-
[解決済み] UINavigationControllerに右ボタンを追加する方法は?
-
[解決済み] iOSアプリでドキュメントフォルダ内にフォルダを作成する
-
[解決済み] ITunesのレビューURLとiOS 7(ユーザーにアプリを評価してもらう)AppStoreに空白のページが表示される。
-
[解決済み] CALayer setNeedsDisplayInRect:] の暗黙のアニメーションを無効にする。
-
[解決済み] Mac OS Xのスタティック・ライブラリ(.a)のターゲット・アーキテクチャはどのように決定するのですか?
-
[解決済み] iPhoneシミュレーターでカメラをテストするには?
-
[解決済み] all_loadリンカーフラグは何をするのですか?
-
[解決済み] CALayersを使ったUIViewの丸め方 - 角の一部だけ - How?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Cocoapodsの使用時にXcodeの警告を無視する
-
[解決済み] UIPageControlのページネーションドットの色を変更するにはどうしたらよいですか?
-
[解決済み] iPhoneでウェブページからアプリがインストールされているかどうかを確認する方法
-
[解決済み] iPhone/iPadのディスクの空き容量を確認する方法を教えてください。
-
[解決済み] UISearchDisplayController/UISearchBarでNSFetchedResultsController(CoreData)をフィルタリングする方法
-
[解決済み] Objective-C用JSONパーサーの比較(JSON Framework、YAJL、TouchJSON、etc.)
-
[解決済み] cocoaアプリケーションのinfo plistにある「bundle display name」と「bundle name」の違いは何ですか?
-
[解決済み] UIScrollViewをコンテンツに合わせて自動サイズ調整する方法
-
[解決済み] iPhoneのデータ使用量のトラッキング/モニタリング
-
[解決済み] UILabelがラベルサイズに合うようにテキストを自動縮小しない