• ベストアンサー

iPhone Objective-C ドラッグ

iPhoneアプリで画像のドラッグはYouTube等の動画サイトで 説明付きのものもあり 作成することはできたのですが 画像ではなく ボタンの場合だとどうすればよいのでしょうか? Interface Builderですでに他のアクションとコネクト済みのボタンをドラッグさせることは可能でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.2

> UIButtonのアクションに関してですがアクション1をTouch Down時に > アクション2をTouch up時にという風にコネクトさせています > この場合、ドラッグの処理が優先されてもTouch Down時に実行されるアクション1は同時実行されないのでしょうか? やってみればわかります。やった結果、期待どおりにいかなければ、どういう結果になったのか、報告とあわせて、質問し直してください。 (回答者を、便利屋さん扱いしないように。あなたはだれにも金銭を伴う報酬を支払っていないのですから、回答者の無償の行為を無駄づかいしないように。お金を払ってるのなら、がんがん質問しまくればいいんでしょうけど。) > >UIButtonではなく、べつのクラスにする > とおっしゃいましたが具体的には何が一番良いと思われますか? UIImageViewですね。 どのクラスを使うかというよりは、UIGestureRecognizerの、どのサブクラスを使い分けるか、というほうが、問題の焦点だと思います。 UIButtonをタップダウンしたときのイベントメソッドを、UIPanGestureRecognizerのアクションメソッドに移動すれば、いいのではないか?という発想はありませんか? いえることは、イベントの発生があらかじめ組みこまれているUIControlクラスだけは除外、というだけです。

nosuke5614
質問者

お礼

harawoさんの言うようにUIButtonではなくUIImageViewで作成しなおしました touchesBeganにTouchDownのイベントを touchesEndedにTouchUpのイベントを書き込んで事項したところうまくいきました。 ありがとうございます

その他の回答 (1)

  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.1

iPhoneのプログラミングをしているのですから、iOSならびにObjective-Cの用語を使って、現状の説明と質問をしましょう。そうしないとあらぬ誤解とすれちがい、する必要のない仲違いを起こす原因になります。 「画像のドラッグ」とは、画像を貼り付けているUIView(の、おそらくサブクラスであるUIImageView)のインスタンスをドラッグするという意味だと思います。それでいいですね? ボタン(UIButton)はUIControlのサブクラスですが、UIControlはUIViewのサブクラスなので、UIButtonはUIViewのサブクラスです。なので、UIImageViewをドラッグするプログラムと、まったくおなじプログラムで、ボタンのドラッグが可能です。 ドラッグというイベントの処理をするには、ふたとおりがあり、ひとつはUITouchクラスを使う方法、もうひとつはUIGestureRecognizerクラスを使う方法です。今回のケースでは、ボタンをタップするというイベントと、ボタンをドラッグするというイベントを区別しなければいけませんから、UIGestureRecognizerを使ったほうが、プログラムしやすいでしょう。ドラッグイベント処理は、UIGestureRecognizerのサブクラス「UIPanGestureRecognizer」を使います。 UIPanGestureRecognizer Class Reference http://developer.apple.com/library/ios/#documentation/uikit/reference/UIPanGestureRecognizer_Class/Reference/Reference.html (ガイド)Gesture Recognizers http://developer.apple.com/library/ios/documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/GestureRecognizers/GestureRecognizers.html#//apple_ref/doc/uid/TP40009541-CH6-SW1 ボタンはタップして指を離したときにイベントが発生することに注目します。対してドラッグはタップした瞬間に、イベントが発生します。つまりボタンアクションの実行より、ボタンドラッグのアクション(メソッド)の実行が優先されることになります。ボタンアクションが優先されて、ボタンドラッグが行われないということにはなりません。 (しかしながら、ドラッグが終わった瞬間に、ボタンのアクションが実行されますから、意図しない結果となる可能性は高いです。もし自分がそういうGUIを作るとしたら、UIButtonではなく、べつのクラスにすることでしょう。アクションの実行は、かならずしもUIButtonでなくても、可能なので)

nosuke5614
質問者

補足

返答ありがとうございます そうですね。用語を使って説明を分けた方がよかったですね すみませんでした UIButtonのアクションに関してですがアクション1をTouch Down時に アクション2をTouch up時にという風にコネクトさせています この場合、ドラッグの処理が優先されてもTouch Down時に実行されるアクション1は同時実行されないのでしょうか? また、興味本位ですがharawoさんは >UIButtonではなく、べつのクラスにする とおっしゃいましたが具体的には何が一番良いと思われますか?

関連するQ&A

  • iPhone アプリ ドラッグ

    iPhoneアプリ作成で iPhoneのロック画面解除で画像を右へスライドさせてロックを解除する このようなアクションを作成したいのですがどうすればよいのでしょうか? 画像のドラッグだとA点(初期)からB点(目的地)までいろんな経路で行くことができますが そうではなく、A点からB点までを一直線で結んで その線の上しか移動することができないようにしたいです (画像を放した際、初期の場所に戻らなくていいです) どうすればよいでしょうか?

  • iPhoneアプリで作成したアプリをInterfa

    iPhoneアプリで作成したアプリをInterface BuilderからiPhone5の画面サイズに対応させたのですが 全体的に上に寄ってずれてしまいます。 画像の位置を下にずらすとiPhone5ではちょうど真ん中でも4,4Sでは下に行ってしまいます。 iPhone5の画面サイズ(Retina 4 Full Screen)に対応させつつ5でも4,4Sでも中央揃えにすることは出来ますか?

  • iPhoneアプリ開発 interface builderの使い方

    iPhoneアプリ開発 interface builderの使い方 interface builderを使ってボタンやラベル等の オブジェクトを配置しているのですが 配置される順番が配置した順になってしまい ラベルの上にボタンが来てしまいラベルが読めなくなってしまいます。 配置した後に配置する順番を変えることはできないのでしょうか? わかりにくいですが図です。 上//////////////////////////////////////////////////  ラベル ⇒ ボタン  ボタン   ラベル 下////////////////////////////////////////////////// 説明が不足していて申し訳ないです。

    • ベストアンサー
    • Mac
  • iphoneアプリ interface builderでのLabelの

    iphoneアプリ interface builderでのLabelの文字スペースの変更 iphoneアプリを制作しようとしており、interface builderのLibraryからLabelをドラッグしてViewの画面に配置したのですが、このLabelの文字と文字の間のスペースは微調整できるのでしょうか? 「123」を「 1 2 3 」のように、文字と文字の横のスペースを広げたいと考えています。 お手数ですが、教えて頂けると幸いです。 以上、よろしくお願いします。

    • ベストアンサー
    • Mac
  • Iphoneアプリ開発について

    Interface Builderを使用せずXcodeのみで 画面を作成したいです。 以下のサイトのような感じです。 http://webos-goodies.jp/archives/how_to_create_an_iphone_app_without_interface_builder.html 他に参考になるサイト、参考書を教えて頂きたいです。 よろしくお願いします。

  • iPhone アプリ 通過後処理

    iPhone アプリ作成に関してですが UIButtonの画像付きボタンをドラッグさせた際 指定した座標を通過もしくはその座標の点の上にボタンが来たらアクションを実行 ということは可能でしょうか? また、座標ではなく、表示されているUIImageもしくはUIButtonの上を通過したら実行 という処理も可能でしょうか? 作成しているアプリでは、通過する座標は同じなのですが表示されているUIButtonがその前の処理で異なるので 個人的には後者の処理を行いたいです

  • iPhone アプリ タップ 拡大

    iPhoneアプリの作成に関しての質問です。 アプリ起動後、画像ボタンをタップするとその画像が拡大(1.5倍ほど)されて表示 拡大後、そのボタンの周りに設置されたボタンを押すことができるようになり 中央をタップすると縮小してもとに戻る こういったアクションを加えたいのですがどうすればよいでしょうか?

  • 【iPhoneアプリ開発】Interface Builder でのメソッド追加方法について(iPhone SDK 3.1)

    下記のサイトの例に従い、練習アプリを作成しているのですが、 下記のサイトの「5. ボタンイベントの追加」という行程で、 メソッドの追加というのをやろうとしているのですが、 さっぱりできません。 具体的にいうと、File's Owner を選択し、Interface BuilderのメニューからTools>Inspectorを選択しても、図のなかの右のような状態になりまません。 単純なミス等かと思いますが、ご存知の方がおりましたら、 よろしくお願いいたします。 http://sites.google.com/a/gclue.jp/iphone-app-docs/iphoneapurinyuumon--viewhen ------------------------------ 5. ボタンイベントの追加 それでは、ボタンイベントを追加します。Interface BuilderのHelloViewViewController.xibを編集します。 File's Owner を選択し、Interface BuilderのメニューからTools>Inspectorを選択し、Inspectorの一番最後のタブを選び、Class Actions で"+"を選択します。 HelloViewViewControllerで使用するイベント名を追加します。今回は、ボタンがたたかれた時に、太鼓の音を鳴らす"playTaico"というメソッドを追加します。 ------------------------------

    • ベストアンサー
    • Mac
  • iphoneのドラッグについてのプログラミング

    ドラッグしている指の座標をとってくるアプリを作成した。 ホームボタンがある下側の画面外からタッチして画面内へとドラッグし続ける場合はちゃんと反応するのですが、上側の画面外からタッチして画面内へとドラッグした場合反応しません。 これはどうしてでしょうか?  ステータスバーが関わっているかと思い、消してみましたが変化はありませんでした。  どうしたら解決できるのでしょうか? わかる方がいればぜひお力をお貸しください。

  • iPhone の同期

    iPhone4S を使用しています。 YouTubeよりダウンロードした動画をiPhone4Sに同期したいのですがうまくいきません。 症状・手順としては以下の通りです。 1.YouTubeよりmp4形式でDL 2.iTunes上にプレイリストを作成して対象の動画をドラッグ&ドロップ 3.iTunes:「iPhone」ボタン→「このiPhone上」ボタン→同名のプレイリストで同期対象の動画を確認 4.同期ボタンを押下 同じツール、手順で同期しているのですが、動画192本中、173本しか同期できていません。 同期できていない動画はiTunesプレイリスト上では再生可能です。 しかし、3.の画面では対象動画自体を確認できません。 メディアの種類はミュージックビデオにしています。 (ムービーやホームビデオにしても同期できませんでした) 問題のソリューションをご存知の方がいましたらご教示の程、よろしくお願いします。 m(_ _)m