> blog

雑多に書いていくブログ

iOSでタッチサイズを取得する方法

iOSでタッチサイズを取得する方法がわかったのでメモ.

stackoverflowなどでも何故かそんなAPIはないっていう人が多くて半ば諦めかけていたんですが,
The fat thumbっていう研究の論文にタッチサイズを取得するコードが載っていたのを発見しました.

touchイベントが検出された際に実行されるdelegate method内で以下のようにすれば取得できます.
(ここの例ではtouchesBegan:withEvent:)

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSValue *val = [[touches anyObject] valueForKey:@"_pathMajorRadius"];
}

簡単ですね.

この_pathMajorRadiusはUITouchクラスのメンバ変数のようですが,
なぜこの変数の存在があまり知られていないんでしょうか...
僕もまさか論文で知るとは思いませんでした.

あとはタッチの圧力なども取得したいと思っているんですが,
調べてみてもUIAccelerationを用いた無理矢理感のある実装しか見つけ出すことができませんでした.
それだとタッチされた瞬間的な圧力しか検出できないんですよね.(加速度を用いた実装なので)

なんかいい方法はないんでしょうか.