zoukankan      html  css  js  c++  java
  • 3DTouch-ShortcutItem

    据说苹果某个神秘的团队闭门潜心研发多年的3DTouch终于,应用在iOS9上,且公开了API。

    4CA7E65D1DB563D301F37DFF391C2612副本

    在系统主界面用力按压 APP 图标,如上会出现自定义菜单

    有两种方法可以实现
    一.代码(这种方法也是可以动态的改变 3DTouch菜单的内容与功能):
    第一步:自定义一个初始化菜单的方法;

    -(void)init3DTouch{
        if ([[UIDevice currentDevice] systemVersion].floatValue < 9.0) {
            return;
        }
        UIApplication *app = [UIApplication sharedApplication];
        NSMutableArray *its = [[app shortcutItems] mutableCopy];
        if (its.count == 0) {
            NSMutableArray *items = [[NSMutableArray alloc] init];
            UIApplicationShortcutIcon *icon2 = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeAdd];
            UIApplicationShortcutItem *i2 = [[UIApplicationShortcutItem alloc] initWithType:@"com.xiaomi.i2" localizedTitle:@"发起群聊" localizedSubtitle:@"" icon:icon2 userInfo:nil];
            [items addObject:i2];
            UIApplicationShortcutIcon *icon = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeShare];
            UIApplicationShortcutItem *i1 = [[UIApplicationShortcutItem alloc] initWithType:@"com.xiaomi.i1" localizedTitle:@"电话会议" localizedSubtitle:@"" icon:icon userInfo:nil];
            [items addObject:i1];
            [app setShortcutItems:items];
        }
    }

    第二步:实现 UIApplication 协议来响应系统主页按压APP出现菜单的,菜单对应点击事件;

    -(void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler{
        if ([shortcutItem.type isEqualToString:@"com.xiaomi.i1"]) {
            
            // 点击菜单一 ‘发起群聊’ 执行的内容
        }
        else if ([shortcutItem.type isEqualToString:@"com.xiaomi.i2"]){
            
            // 点击菜单二 ‘电话会议’ 执行的内容
        }
    }
    // Called when the user activates your application by selecting a shortcut on the home screen,
    // except when -application:willFinishLaunchingWithOptions: or -application:didFinishLaunchingWithOptions returns NO.

    第三步:判断 launchOptions != nil 则返回NO;顺便获取激活APP的对象,手动执行所点击的菜单事件

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        
        [self init3DTouch];
        // 当APP 不再后台运行时 通过3DTouch 激活APP,launchOptions不为空手动调用 performActionForShortcutItem
        if ( launchOptions != nil ) {
            UIApplicationShortcutItem *i = [launchOptions objectForKey: UIApplicationLaunchOptionsShortcutItemKey];
            [self application:application performActionForShortcutItem:i completionHandler:^(BOOL succeeded) {
                NSLog(@"launchOptions no null");
            }];
            return NO;
        }
        return YES;
    }

    二.info.plist 

    =============================

    参考:http://www.jianshu.com/p/74fe6cbc542b

  • 相关阅读:
    深入理解DOM事件类型系列第四篇——剪贴板事件
    深入理解DOM事件机制系列第四篇——事件模拟
    利用select实现年月日三级联动的日期选择效果
    深入理解表单脚本系列第四篇——选择框脚本
    存储过程返回布尔值以及C#相关处理
    Type 'Insus.NET.PictureObject' in Assembly 'App_Code, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.
    打开Windows10网络发现或是文件打印共享
    反射(Reflection)的SetValue遇上DBNULL转换为string
    MS SQL中使用UPDATE ... INNER JOIN ...
    Visual Studio 2015正式企业(Enterprise)版
  • 原文地址:https://www.cnblogs.com/loganv/p/4885433.html
Copyright © 2011-2022 走看看