iPhoneアプリ開発 -UIScrollViewでタッチを取得-
やりたいこと
UIScrollViewでタッチを取得する。
方法
通常のUIScrollViewでは、タッチを取得することができません。
タッチを取得するには、以下の方法で可能になります。
- UIScrollViewのカテゴリを作成する。
- UIScrollViewのサブクラスを作成する。
カテゴリを作成する方法だと、UIScrollViewの全てに対応してしまいます。
1つのViewControllerに複数のUIScrollViewを利用しているので、今回はサブクラスを作成する方法を採用しました。
実装例
サブクラスの作成としてCustomScrollView.h/CustomScrollView.mを実装します。
CustomScrollView.h
#import <UIKit/UIKit.h> @interface CustomScrollView : UIScrollView<UIScrollViewDelegate> @end
CustomScrollView.m
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { //タッチした時の処理 } - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { //タッチしたまま移動させた時の処理 } - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { //タッチを終えた時の処理 } @end
touchesBegan、touchesMoved、touchesEndedをオーバーライドします。
必要な内容は上記の各メソッドに記述します。
利用例
InterfaceBuilderを利用する場合は、設置したUIScrollViewのclassをCustomScrollViewに変更します。
hファイルと関連付けると以下のようになります。
@property (weak, nonatomic) IBOutlet CustomScrollView *scrollView;
これで、UIScrollViewでタッチを取得することができます。
広告
関連記事
-
iPhoneアプリを開発してての疑問 -教えてエライ人!-
MacでiPhoneアプリを開発してて疑問に思ったのの解決してないことを列挙。 知識不足をさらけ出し
-
Objective-cで悩んでいたこと −アクセサのことについて−
* 疑問 以前書いたiPhoneアプリを開発していて(Objective-Cを触っていて)疑問に思
-
iPhoneアプリ開発 −遷移先のViewControllerに値を引き継ぎたい−
例えば、トップページに複数個のボタンがあって、「A」と「B」というボタンを押下した際に、同じView
-
リンク文字をタッチしても色が変わらない --webkit-tap-highlight-colorのメモ-
* 背景 jQuery Mobileを利用してスマートフォン対応をしたサイトにおいてリンク文字をタッ
-
iPhoneアプリ開発 -バックグラウンド処理をした際にはまったこと-
* おきたこと 以下のメソッドを用いて、処理に時間がかかるもの(ここだとhoge)をバックグラウンド
-
jQuery Mobileのバージョンアップではまった – pushStateの存在 –
jQuery Mobileをつかってスマートフォン対応をしたときにはまったこと。 * 前提
-
CakePHP1.3でスマートフォン対応
CakePHP1.3でスマートフォン対応のためにやったことをメモしておきます。 * 環境 -
-
order byでハマったこと -order by、group byの処理順序-
CakePHPでorder byとgroup byを使っていてはまったことについてのメモ。 *
-
Capistranoで簡単デプロイ -開発用サーバー編-
cakePHPを使って開発しているサービス()で、リリース周りを楽にしたいなと思いCapistran
-
githubを使っての開発(2) -masterブランチにマージ-
前エントリーでgithub-flowをもとにした流れを書いたのですが、その中のマージについてもう少し