3D Touchを試す
2015.9.30 関西モバイルアプリ研究会 #6
@itok_twit
@itok_twit
• いとうけい(itok)
• 公私共にプログラマ iOS / Mac(たまに Android や Windows)
• http://itok.jp/
3D Touch
3D Touch
• UITouch
• UIApplicationShortcutItem
• UIViewControllerPreviewing
はじめに
• 3D Touchが使えるか?
• UITraitCollection.forceTouchCapability で確認
• シミュレータでは使えません
UITouch
• force touch具合を直接取得できる
public var force: CGFloat { get }
public var maximumPossibleForce: CGFloat { get }
• touchesMovedが大量に呼ばれるので注意
UIApplicationShortcutItem
UIApplicationShortcutItem
• Info.plistに静的に宣言
→UIApplicationShortcutItems
• UIApplication.shortcutItemsで動的に変更
public class UIApplicationShortcutItem : NSObject {
public init(type: String,
localizedTitle: String,
localizedSubtitle: String?,
icon: UIApplicationShortcutIcon?,
userInfo: [NSObject : AnyObject]?)
}
UIApplicationShortcutItem
• UIApplicationDelegateで受け取る
func application(application: UIApplication,
performActionForShortcutItem shortcutItem:
UIApplicationShortcutItem,
completionHandler: (Bool) -> Void)
UIViewControllerPreviewing
UIViewControllerPreviewing
• Previewingに対応するViewを指定する
extension UIViewController {
public func registerForPreviewingWithDelegate(
delegate: UIViewControllerPreviewingDelegate,
sourceView: UIView) -> UIViewControllerPreviewing
}
UIViewControllerPreviewing
• UIViewControllerPreviewingDelegateを実装
protocol UIViewControllerPreviewingDelegate {
public func previewingContext(
previewingContext: UIViewControllerPreviewing,
viewControllerForLocation location: CGPoint)
-> UIViewController?
public func previewingContext(
previewingContext: UIViewControllerPreviewing,
commitViewController viewControllerToCommit:
UIViewController)
}
UIViewControllerPreviewing
• メニューはUIViewController.previewActionItems()で宣言
class UIPreviewAction : NSObject, UIPreviewActionItem {
public convenience init(
     title: String,
     style: UIPreviewActionStyle,
     handler: (UIPreviewAction, UIViewController) -> Void)
}
class UIPreviewActionGroup : NSObject, UIPreviewActionItem {
public convenience init(
     title: String,
     style: UIPreviewActionStyle,
     actions: [UIPreviewAction])
}
• UIPreviewActionGroupでサブメニューも作れる
3D Touch
• UITouchを使っているコード(UIViewのサブクラ
スなど)は要注意
• UIApplicationShortcutItemは結構使えそう
• UIViewControllerPreviewingもmaster-detail的ナ
ビゲーションでは使えそう

20150930 3D Touchを試す