// AppDelegate
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
return true
}
@available(iOS 9.0, *)
func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void) {
// QuickAciton起動時
QuickActionManager.sharedInstance.callQuickAction(shortcutItem)
}
}
// ViewController (QuickActionを設定する場所にメソッドを入れる)
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if #available(iOS 9.0, *) {
QuickActionManager.sharedInstance.setQuickAction()
}
}
}
// QuickActionManager
import Foundation
import UIKit
@available(iOS 9.0, *)
class QuickActionManager: NSObject {
typealias QuickActionFormat = (type: String,
localizedTitle: String,
localizedSubtitle: String?,
icon: UIApplicationShortcutIcon?,
userInfo: [NSObject : AnyObject]?)
lazy var shortcut1: UIMutableApplicationShortcutItem = {
return UIMutableApplicationShortcutItem(type: QuickActionType.Search.rawValue,
localizedTitle: QuickActionType.Search.rawValue,
localizedSubtitle: nil,
icon: UIApplicationShortcutIcon(type: .Search),
userInfo:["value1":"key1"])
}()
lazy var shortcut2: UIMutableApplicationShortcutItem = {
return UIMutableApplicationShortcutItem(type: QuickActionType.Location.rawValue,
localizedTitle: QuickActionType.Location.rawValue,
localizedSubtitle: nil,
icon: UIApplicationShortcutIcon(type: .Location),
userInfo:["value2":"key2"])
}()
lazy var shortcut3: UIMutableApplicationShortcutItem = {
return UIMutableApplicationShortcutItem(type: QuickActionType.Share.rawValue,
localizedTitle: QuickActionType.Share.rawValue,
localizedSubtitle: nil,
icon: UIApplicationShortcutIcon(type: .Share),
// icon: UIApplicationShortcutIcon(templateImageName: "imageName") // 画像を指定する場合
userInfo:["value3":"key3"])
}()
enum QuickActionType: String {
case Search = "Search"
case Location = "Location"
case Share = "Share"
}
static let sharedInstance: QuickActionManager = {
let instance = QuickActionManager()
return instance
}()
func setQuickAction() {
var items: [UIMutableApplicationShortcutItem] = []
// 条件により動的にQuickActionを追加
if true {
items.append(shortcut1)
}
if true {
items.append(shortcut2)
}
if true {
items.append(shortcut3)
}
if !items.isEmpty {
UIApplication.sharedApplication().shortcutItems = items
}
}
func callQuickAction(item: UIApplicationShortcutItem) {
switch item.type {
case QuickActionType.Search.rawValue: print("Select Search!")
case QuickActionType.Location.rawValue: print("Select Location!")
case QuickActionType.Share.rawValue: print("Select Share!")
default: break
}
}
}
Last active
April 23, 2016 00:57
-
-
Save KentarouKanno/c47dc634a8904c7af235f59492bbdb18 to your computer and use it in GitHub Desktop.
3D Touch - QuickAction
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment