2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[iOS]ストーリーボードに貼ったUILabelに、インタラクティブな処理を追加したい

Posted at

#やりたいこと
ラベルのような動かないControlも、IBActionでインタラクティブに処理をさせたい.

##かいけつさく
GestureRecognizer Objectを使おう。ほぼボタンと同じようにアクションが記述できる。
可能な限りストーリーボードだけ使い、コードはアクションメソッドだけ書きたい

##やりかた
0. Xcodeでストーリーボードを使ったプロジェクトを準備。Versionは現行。

  1. ObjectLibraryからTapGestureRecognizerをストーリーボードのViewControllerの上部(黄色とかオレンジのアイコンが並んだバーになってる領域な)にD&Dで設置する。

  2. TapGestureRecognizerのReferencing Outlet Collectionsの◎を引っ張って、画面のVC上のラベルコントロール(UILabel)にドロップしてヒモ付ける。

  3. 実行したい内容をIBActionメソッドとして記述しておく。
      →このようなシグネチャのメソッド -(IBAction)selector:(id)sender{}

  4. TapGestureRecognizerの sent Actionsの◎からVCパネルに引っ張ると、IBアクションメソッドがリストになって表示されるので、今書いたメソッドを選択する。

いっぱい番号ふってあるが、こんだけ。実際は、1つコードを書いて、画面上で3つ操作しするだけだからラクラク。

※なお、ボタンなど元々インタラクティブなコントロールに、この処理を適用すると、本来のボタンアクションがキャンセルされるので、本来の処理も残したい場合は、Gestureオブジェクトのbehavor欄の cansels touch in veiwsのチェックをOFFする。

##そのた

  1. これは、ObjectiveCの話だが、たぶんSwiftでも同じようにいけるんじゃないかな? 試してみてくれ!
  2. あとGestureRecognizerの数を増やすか、アクションメソッド側でsenderによる分岐を入れることで、複数のコントロール毎に処理できるけど、面倒なんで省略。

[EOF]

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?