• 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

  • 相关阅读:
    C# 获取本地电脑所有的盘符
    C#winform程序安装在默认路径提示权限不足的问题
    BadImageFormatException异常处理
    未能找到元数据文件解决办法
    [转]DllImport属性详解
    九度oj1163题
    一致性哈希
    salt-stack部署
    查询系统支持的最大线程和进程数量
    Linux 单机测试 RS232 串口
  • 原文地址:https://www.cnblogs.com/loganv/p/4885433.html
Copyright © 2020-2023  润新知