3DTouchを検出してみよう
内容
3DTouchの生データを取得して、利用してみよう。
用意するもの
- iPhone6s/iPhone6s plusのいずれか
- Xcode7.0.1
- 実機動作環境
3DTouchとは
あなたがディスプレイに加えた圧力の大きさを、iPhoneが初めて感知するようになったのです。
- apple
要するに、画面をどれくらい強く押しているか分かるようになりました。
押している強さを取得してみよう
画面を押している強さは、UITouchのプロパティとして追加されました。
force
と、maximumPossibleForce
です。
forceは画面を押している強さ
そして、maximumPossibleForceは画面を押した際に感知できる最大値
です。
まずは、UITouchはtouchesMovedで取得するのが良いでしょう。
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
let touch = touches.first
let force = (touch?.force)!/(touch?.maximumPossibleForce)!
print(force)
}
touchesMovedは複数のUITouchを引数としています。
これは画面を複数の指でタッチした際に感知するためです。
今回は1つの指だけで良いので、touchesセットから最初のtouchを抜き出します。
次に(touch?.force)!/(touch?.maximumPossibleForce)!
という計算式が出てきました。
これは、強さ/最大値
という計算式になっておりタッチの強さを0.0~1.0の間で扱えるように変換しています。
こうすることで、ディスプレイの品質や劣化によってmaximumPossibleForceが変化した場合も全てのデバイスで同様にタッチの強さを扱うことが出来ます。
上記のコードを実行して、iPhoneの画面を強く押してみましょう。
0.418749993760139
0.490624992689118
0.568749991524965
0.649999990314245
0.737499989010394
0.83124998761341
0.921874986262992
1.0
1.0
このように、強くおした時は1.0その間は0.xを指します。
離した際は必ず0.0になるわけではないので、その処理を使う場合はtouchesEndedを通すのが良いです。
Author And Source
この問題について(3DTouchを検出してみよう), 我々は、より多くの情報をここで見つけました https://qiita.com/noppefoxwolf/items/ecb1a0caac9741b01e93著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .