読者です 読者をやめる 読者になる 読者になる

ROADTO みちログ

ひとのみちのブログ。大阪でiOSアプリの道を歩くフリーランス。

WWDC2016セッションメモ「A Peek at 3D Touch」

WWDC2016

WWDC2016セッションを見たメモです。
文中の画像やコードは公開情報から引用しています。
正確で詳しい内容をお求めの方は一次情報の確認をおすすめします。

A Peek at 3D Touch

A Peek at 3D Touch - WWDC 2016 - Videos - Apple Developer

ぐっ ぶっ ぴ のやつ。
こんなやつ。
f:id:hitonomichi:20160627085142p:plain
こんなやつとか。
f:id:hitonomichi:20160627085144p:plain

UIPreviewInteraction

f:id:hitonomichi:20160627085146p:plain 新しいやつ。
アプリ内の3D Touchに関する技術。
3D Touchが扱いやすくなりましたよ。

f:id:hitonomichi:20160627085147p:plain

UIPreviewInteractionDelegate

プロトコルに準拠します。

extension ChatDetailViewController :UIPreviewInteractionDelegate

UIPreviewInteraction

UIPreviewInteractionを生成します。

override func viewDidLoad() {
    super.viewDidLoad()
    replyPreviewInteraction = UIPreviewInteraction(view: view)
    replyPreviewInteraction.delegate = self
}

状態が二段階になってる。
開始〜プレビューの状態と、プレビュー〜コミットの状態。

ぐっと押して、プレビュー表示の状態。
f:id:hitonomichi:20160627085149p:plain ぐぐっと押して、コミット完了した状態。
f:id:hitonomichi:20160627085151p:plain

デリゲートメソッド

開始されたときのデリゲートメソッド。

previewInteractionShouldBegin() 

開始〜プレビューまでの状態の時に、
押す強さが更新されたら呼ばれるデリゲートメソッド。

func previewInteraction(_  previewInteraction: UIPreviewInteraction,
                        didUpdatePreviewTransition transitionProgress: CGFloat,
                        ended: Bool) {
    //ビューの更新処理
    updateForPreview(progress: transitionProgress)

    if ended {
        //プレビューの完了処理
        completePreview()
    }
}

プレビューがキャンセルされたら呼ばれるデリゲートメソッド。
指を離した時ですね。

func previewInteractionDidCancel(_ previewInteraction: UIPreviewInteraction) {
    //キャンセル処理
    UIView.animate(withDuration: 0.4) {
        self.updateForPreview(progress: 0)
        self.resetToInitialAppearance()
    } 
} 

プレビュー〜コミットまでの時に、
押す強さが更新されたら呼ばれるデリゲートメソッド。

func previewInteraction(_ previewInteraction: UIPreviewInteraction,
                        didUpdateCommitTransition transitionProgress: CGFloat,
                        ended: Bool) {
    //ビューの更新処理
    updateForCommit(progress: transitionProgress)

    if ended {
        //コミットの完了処理
        completeCommit()
    } 
}

f:id:hitonomichi:20160627085141p:plain

感想

この操作ができることをどうやってユーザーに知らせるかが課題ではある。
扱いやすくなったのではりきって3D Touchするぞー!

WWDC2016セッションメモシリーズはこちら

WWDC2016 カテゴリーの記事一覧 - ROADTO みちログ

自己紹介
メガネは売っていません
高浜 一道(たかはま かずみち)
大阪でiOSアプリの道を歩くフリーランス。
iPad・iPhoneとサーバを連携した、JSONやDBといったキーワードが出てくるツール系が多めです。
お仕事のご依頼やご連絡はこちらから。
お仕事ください!
Web : ROADTO
ML : k-takahama(a)roadto.jp

個人的なアカウントはこちら。
Tw : @hitonomichi
Fb : kazumichi.takahama