Help us understand the problem. What is going on with this article?

iOS8からUITouchにタッチ半径を測定するプロパティがある

More than 5 years have passed since last update.

UITouchクラスのヘッダーを見てたらiOS8からmajorRadiusというプロパティが増えていた。

// majorRadius and majorRadiusTolerance are in points
// The majorRadius will be accurate +/- the majorRadiusTolerance
@property(nonatomic,readonly) CGFloat majorRadius NS_AVAILABLE_IOS(8_0);
@property(nonatomic,readonly) CGFloat majorRadiusTolerance NS_AVAILABLE_IOS(8_0);

雑に説明すると、タッチしたときの指の半径を返してくれる。

実際にiPad mini Ratina 2013で試した感じでは下記のような測定値になる

  • 人差し指の指先でちょんと触って12から25.75000
  • 人差し指をベタっと付けたら51から64.390625程度
  • ペンを握るような感じで手を付けると115から270程度

単位はcmとか物理スケールではない気がするが、何かに使えそう。

なんと@shu223iOS8SamplerにこのmajorRadiusを含むサンプルコードを追加してもらったので、GitHubにあるアニメーションGIFで雰囲気が伝わる。

デモを見るとわかるが、majorRadiusは実際はデバイスと指の接地面積なんだけど指に力を入れるとだいたい接地面積が増えるので結果的に圧力っぽい錯覚を受けてそれっぽいので何かに使えそう。

majorRadiusToleranceについて

AppleのリファレンスによるとmajorRadiusToleranceは誤差らしく先述の条件で測定したところ6.437500から変わらなかった。

端末をiPhone5sにすると6.378906となり違う値となったため、おそらくデバイス毎に許容誤差として固定値が割り当てられているか工場出荷状態に戻すなど何らかのキャリブレーションによってこの値が変わるのかもしれない、とにかく利用する際にはデバイスごとに違う固定値なのは間違いない。

参考URL

iOS 8 の新機能のサンプルコード集『iOS8-Sampler』を公開しました
http://d.hatena.ne.jp/shu223/20140918/1410979802

UITouch Class Reference
https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITouch_Class/index.html#//apple_ref/occ/instp/UITouch/majorRadius

yimajo
株式会社キュリオシティソフトウェアの代表です。iOSアプリを作っています。最近はRxSwift研究読本書いてます。 https://swift.booth.pm/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした