2012年7月31日火曜日

iOS端末でマルチタッチを検知して処理する

このエントリーをはてなブックマークに追加
iPhoneやiPadなどのiOS端末でタッチイベントをキャッチするときはtouchesBegan等のメソッドを利用します。マルチタッチされたかどうかはこのメソッドの引数を利用して知ることができます。ここではマルチタッチを検知して処理する方法を書いています。


処理方針
まず、マルチタップを行える状態にします。UIViewが持っているプロパティのmultipleTouchEnabledをYESにすることでマルチタップが行えるようになります。このプロパティはデフォルトではNOとなっています。 

次に、touchesBeganのメソッド引数であるtouchesから複数のタッチを検出します。Objective-Cでは列挙子と呼ばれる仕組みが使えるようなので、それを利用してタッチ情報を順番に取得します。


プログラム
iPhoneでのタッチやタップをtouchesBeganで検知するで作成したBaseWindowクラスにinitWithFrameメソッドを追加し、UIWindow(UIViewのサブクラス)のインスタンスが作成されるタイミングでYESにするようにしました。また、touchesBeganを修正し、タッチされた数とタッチされた全ての位置をログに出力するようにしました。

BaseWindow.m
- (id)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self != nil) {
        self.multipleTouchEnabled = YES;
    }
    
    return self;
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    NSInteger touchCount = [touches count];
    NSLog(@"touchesBegan: count = %d", touchCount);
    
    NSEnumerator *enumulator = [touches objectEnumerator];
    UITouch *touchObject;
    while (touchObject = [enumulator nextObject]) {
        CGPoint tmpLocation = [touchObject locationInView:self];
        NSLog(@"touchesBegan: (x, y) = (%.0f, %.0f)", tmpLocation.x, tmpLocation.y);
    }
}


実行結果
 iPhoneシミュレータでのマルチタッチは、シミュレータ画面上で[option]キーを押したままにすることでできます。カーソルが2つ現れるので、動かすことでピンチイン、ピンチアウト等ができます。マルチタッチの実行結果は次のとおりでした。
2012-07-30 00:39:44.320 HelloWorld[13321:f803] touchesBegan: count = 2
2012-07-30 00:39:44.324 HelloWorld[13321:f803] touchesBegan: (x, y) = (145, 155)
2012-07-30 00:39:44.325 HelloWorld[13321:f803] touchesBegan: (x, y) = (175, 325)

2012年7月30日月曜日

iPhoneでのタッチやタップをtouchesBeganで検知する

このエントリーをはてなブックマークに追加
iPhoneやiPad等のiOSでタッチやタップといったイベントを検知して処理する方法をまとめました。UIWindowクラスを継承し、そのクラスのタッチイベント関連のメソッドを実装することで実現できるようです。タッチイベントに関する4つのメソッドと、それらが呼ばれるタイミングを次にまとめました。

  • touchesBegan:画面に指が触れた時
  • touchesMoved:画面に指が触れた状態で指を移動させた時
  • touchesEnded:画面から指が離れた時
  • touchesCancelled:タッチイベントがキャンセルされた時

touchesCancelledは、例えば画面に指が触れている状態でHOMEボタンを押した時などに呼ばれます。また、各イベントは引数にタッチされた位置(touches)と、イベントの呼び出し元情報(event)などを持ちます。

2012年7月27日金曜日

シェイクしてAndroidアプリを切り替える『Shake -鮭』

このエントリーをはてなブックマークに追加

今起動しているAndroidアプリからバックグラウンド実行中の別アプリに切り替えたいとき、Homeボタンを押してアプリを選択し直すのは少しわずらわしいです。Android端末をシェイクする度にアプリが切り替わる、そんな素敵な機能を提供するアプリが『Shake -鮭』です。

Google Play:Shake -鮭

『Shake -鮭』を起動すると下図のような画面が表示されます。起動ボタンをタップするとアプリ切り替えができるようになります。シェイク感度やタスク切り替え除外の設定もこの画面で行えます。

Shakeの設定画面

あとは、バックグラウンド実行中のアプリへ切り替えたいとき、シェイクするだけで切り替わるようになります。「端末を振って処理を切り替える」という過程は、いかにもスマートフォンらしくて素敵です。

2012年7月24日火曜日

最近使用したAndroidアプリのリストを表示する『PreHome』

このエントリーをはてなブックマークに追加
最近使ったAndroidアプリを素早く起動したいなら『PreHome』が便利です。『PreHome』は最近使用したアプリを一覧表示してくれるアプリです。

PreHome起動画面

『PreHome』を起動すると、最近使用したアプリ一覧が表示されます。アプリのアイコンをタップすると、そのアプリが起動します。また、『PreHome』が起動中状態でMenuキーをタップすると、Settingsボタンが現れます。そのボタンをタップすると起動しているアプリ一覧の表示形式を変更したりすることもできます。

多くのアプリを利用していると、それらを管理するのが大変になってきます。しかし、アプリが多くあったとしても、最近使用したアプリを利用する頻度は高い傾向にあると感じます。そのため、『PreHome』を開くと、起動したいアプリが表示されている可能性が高いため、総合的なアプリ起動時間短縮につながるように思います。

Google Play:
PreHome

アプリ起動ショートカット関連アプリ:
スワイプ操作でAndroidアプリが起動できる!『SwipeStarter』
Androidアプリを素早く起動『Home2 Shortcut』
Homeキーのみでいろんなアプリを起動する 『Home Commander』

2012年7月23日月曜日

iPhoneやiPadを外部ストレージ替わりに使う『iExplorer』

このエントリーをはてなブックマークに追加
iPhoneやiPadをUSBメモリみたいに使いたい。そんなことを手軽に実現できてしまうツールが『iExplorer』です。Macだけでなく、Windowsにもインストールできます。

iExplorer表示画面

 iPhoneやiPadなどの端末を繋げてiExplorerを起動すると図のようなエクスプローラが表示されます。ここにファイルやフォルダをドラッグ&ドロップするだけで、それらを端末にコピーすることができます。 

また、端末の中身が見放題です。 なので、任意のデータを取ったり、アプリの設定値を変更したりできます。端末の内部をいろいろ見たり触れたりできる便利アプリです。

リンク:iExplorer

2012年7月9日月曜日

iPhoneやiPadを電灯替わりに『LED 懐中電灯 HD』

このエントリーをはてなブックマークに追加
寝る前に本を読みたい。暗がりの中で何かを探したい。そんな時にiPadやiPhoneを蛍光灯替わりに使えたら便利です。そんな機能を持つ無料の電灯アプリで、使用してみてとても良かったのが『LED 懐中電灯 HD』です。

LED 懐中電灯 HD(iPad)

点灯したい時は好きな蛍光灯の色を選んでボタンをタップするだけです。他の電灯アプリと比較して良いと思ったところは、蛍光色の選択幅が広い所です。寝る前はオレンジ色、何か探したい時は白色など、用途に応じて好みのカラーが細かに設定できて良いです。

 画面の明るさは画面の右側を上下にスライドすることで簡単に調整できたりします。また、ボタンをタップしたときには切替音が鳴ったりして、演出も素敵です。