郑州网站建设 论坛,硬盘做网站空间,网页制作基础教程第二版葛艳玲,网站导航优化的描述iOS开发-实现3DTouch按压App快捷选项shortcutItems及跳转功能
App的应用图标通过3D Touch按压App图标#xff0c;会显示快捷选项#xff0c;点击选项可快速进入到App的特定页面。
这里用到了UIApplicationShortcutItem与UIMutableApplicationShortcutItem
一、效果图 这里…iOS开发-实现3DTouch按压App快捷选项shortcutItems及跳转功能
App的应用图标通过3D Touch按压App图标会显示快捷选项点击选项可快速进入到App的特定页面。
这里用到了UIApplicationShortcutItem与UIMutableApplicationShortcutItem
一、效果图 这里暂时着了一张图代替了。
二、UIApplicationShortcutItem与UIMutableApplicationShortcutItem
UIApplicationShortcutItem
interface UIApplicationShortcutItem : NSObject NSCopying, NSMutableCopying- (instancetype)init NS_UNAVAILABLE;
- (instancetype)initWithType:(NSString *)type localizedTitle:(NSString *)localizedTitle localizedSubtitle:(nullable NSString *)localizedSubtitle icon:(nullable UIApplicationShortcutIcon *)icon userInfo:(nullable NSDictionaryNSString *, id NSSecureCoding *)userInfo NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithType:(NSString *)type localizedTitle:(NSString *)localizedTitle;
...UIMutableApplicationShortcutItem
interface UIMutableApplicationShortcutItem : UIApplicationShortcutItem// An application-specific string that identifies the type of action to perform.
property (nonatomic, copy) NSString *type;// Properties controlling how the item should be displayed on the home screen.
property (nonatomic, copy) NSString *localizedTitle;
property (nullable, nonatomic, copy) NSString *localizedSubtitle;
property (nullable, nonatomic, copy) UIApplicationShortcutIcon *icon;// Application-specific information needed to perform the action.
// Will throw an exception if the NSDictionary is not plist-encodable.
property (nullable, nonatomic, copy) NSDictionaryNSString *, id NSSecureCoding *userInfo;// used with UISceneActivationConditions to customize what scene should be activated for a shortcut
property (nullable, nonatomic, copy) id targetContentIdentifier;end三、shortcutItems及跳转功能
通过配置需要当3DTouch按压显示的快捷ShortcutItem及跳转代码如下
#import SD3DTouchManager.h
#import SDSessionManager.hstatic SD3DTouchManager *shareInstance nil;implementation SD3DTouchManager (instancetype)sharedInstance {static dispatch_once_t onceToken 0;dispatch_once(onceToken, ^{shareInstance [[SD3DTouchManager alloc] init];});return shareInstance;
}- (void)creat3DShortcutItem {if (IS_IOS9_OR_LATER) {UIApplicationShortcutIcon *sendIcon [UIApplicationShortcutIcon iconWithTemplateImageName:ic_bar_search];UIApplicationShortcutItem *sendItem [[UIApplicationShortcutItem alloc]initWithType:SD_3D_WE_SEND localizedTitle:找代送 localizedSubtitle:nil icon:sendIcon userInfo:nil];UIApplicationShortcutIcon *buyIcon [UIApplicationShortcutIcon iconWithTemplateImageName:ic_note_comment];UIApplicationShortcutItem *buyItem [[UIApplicationShortcutItem alloc]initWithType:SD_3D_WE_BUY localizedTitle:找代买 localizedSubtitle:nil icon:buyIcon userInfo:nil];UIApplicationShortcutIcon *rechargeIcon [UIApplicationShortcutIcon iconWithTemplateImageName:ic_note_tag];UIApplicationShortcutItem *rechargeItem [[UIApplicationShortcutItem alloc]initWithType:SD_3D_RECHARGE localizedTitle:一键充值 localizedSubtitle:nil icon:rechargeIcon userInfo:nil];UIApplicationShortcutIcon *profileIcon [UIApplicationShortcutIcon iconWithTemplateImageName:ic_mine];UIApplicationShortcutItem *profileItem [[UIApplicationShortcutItem alloc]initWithType:SD_3D_RECHARGE localizedTitle:我的信息 localizedSubtitle:nil icon:profileIcon userInfo:nil];[UIApplication sharedApplication].shortcutItems [sendItem,buyItem,rechargeItem,profileItem];}
}- (BOOL)application3DShortcutOptions:(NSDictionary *)launchOptions {BOOL luanched YES;if (IS_IOS9_OR_LATER) {UIApplicationShortcutItem *shortcutItem [launchOptions valueForKey:UIApplicationLaunchOptionsShortcutItemKey];if (shortcutItem) {//判断设置的快捷选项标签唯一标识根据不同标识执行不同操作[self apply3DTouch:shortcutItem];luanched NO;}}return luanched;
}- (void)apply3DTouch:(UIApplicationShortcutItem *)shortcutItem {if ([SDSessionManager shareInstance].isLogin) {UIViewController *controller [UIApplication sharedApplication].keyWindow.rootViewController;UINavigationController *navigationController;if ([controller isKindOfClass:[UINavigationController class]]) {navigationController (UINavigationController *)controller;} else {navigationController controller.navigationController;}if ([shortcutItem.type isEqualToString:SD_3D_WE_SEND]) {DLog(3D 进入代送页面);} else if ([shortcutItem.type isEqualToString:SD_3D_WE_BUY]) {DLog(3D 进入代买页面);} else if ([shortcutItem.type isEqualToString:SD_3D_RECHARGE]) {DLog(3D 进入充值页面);} else if ([shortcutItem.type isEqualToString:SD_3D_MIME_INFO]) {DLog(3D 进入我的信息页面);}}
}end在AppDelegate的didFinishLaunchingWithOptions初始化
//设置3D touch[[SD3DTouchManager sharedInstance] creat3DShortcutItem];实现跳转performActionForShortcutItem
#pragma mark - 3D Touch
//如果APP没被杀死还存在后台点开Touch会调用该代理方法
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler {if (shortcutItem) {//判断设置的快捷选项标签唯一标识根据不同标识执行不同操作[[SD3DTouchManager sharedInstance] apply3DTouch:shortcutItem];}if (completionHandler) {completionHandler(YES);}
}四、小结
iOS开发-实现3DTouch按压App快捷选项shortcutItems及跳转功能
App的应用图标通过3D Touch按压App图标会显示快捷选项点击选项可快速进入到App的特定页面。
学习记录每天不停进步。