1.概述: iOS的快捷鍵分爲靜態快捷鍵和動態快捷鍵,靜態快捷鍵在系統安裝時就可使用,而動態快捷鍵只有第一次啓動程序後能使用。系統限制每一個app最多顯示4個快捷鍵,超過四個的action不起做用。而每一個快捷鍵對應一個UIApplicationShortcutItem 對象。 數組
2.快捷鍵的建立 app
2.1 靜態快捷鍵的建立:在app的info.plist的關鍵字UIApplicationShortcutItems(value值爲數組類型)下,每一個Item爲一個UIApplicationShortcutItem對象,每個UIApplicationShortcutItem中可以包含的信息以下: ui
UIApplicationShortcutItemType(required) 事件的惟一標識,區分事件
atom
UIApplicationShortcutItemTitle(required) 標題,在無子標題時若是標題太長可自動換行 spa
UIApplicationShortcutItemSubtitle 子標題,在標題的下方 設計
UIApplicationShortcutItemIconType 枚舉選取系統中的一個圖標 code
UIApplicationShortcutItemIconFile 自定義一個圖標,以單一顏色單一35*35的大小展現,若是設置這個,UIApplicationShortcutItemIconType將不起做用 orm
UIApplicationShortcutItemUserInfo 字典,裏面能夠添加各類key,value。 對象
2.2動態快捷鍵的建立:用代碼動態添加,UIApplication增長了shortcutItems 屬性 three
@property (nullable, nonatomic, copy) NSArray<UIApplicationShortcutItem *> *shortcutItems;
代碼以下:
UIApplicationShortcutIcon *threeIcon = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypePlay];
UIMutableApplicationShortcutItem *threeShortcutItem = [[UIMutableApplicationShortcutItem alloc] initWithType:@"threeType" localizedTitle:@"標題" localizedSubtitle:@"Subtitle" icon:threeIcon userInfo:nil];
UIApplicationShortcutIcon *fourIcon = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypePause];
UIMutableApplicationShortcutItem *fourShortcutItem = [[UIMutableApplicationShortcutItem alloc] initWithType:@"fourType" localizedTitle:@"標題" localizedSubtitle:@"Subtitle" icon:fourIcon userInfo:nil];
UIApplicationShortcutIcon *fiveIcon = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeAdd];
application.shortcutItems = @[threeShortcutItem, fourShortcutItem];
說明:也能夠把UIApplicationShortcutIcon 改爲可變的,在程序運行時改變action的title,subTitle均可實現。圖片能夠用系統提供的,也可本身設計。
3.點擊事件處理:
3.1點擊事件的處理(後臺):當app在後臺的時候UIApplication提供了一個回調方法
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void(^)(BOOL succeeded))completionHandler;
依據這個回調中的shortcutItem的type和userinfo來作出不一樣的事件處理
3.2點擊事件的處理(開進程):若是是快捷鍵直接開進程的話,didFinishLaunchingWithOptions返回YES的狀況下,didFinishLaunchingWithOptions方法和performActionForShortcutItem方法都會走。官方示例代碼中給出的是直接開進程時didFinishLaunchingWithOptions方法返回NO,這樣就不走performActionForShortcutItem方法了。這種狀況下須要直接在didFinishLaunchingWithOptions方法中處理事件。