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

  • 相关阅读:
    数据类型的总结
    typeof加括号和不加括号的区别
    排序
    数据类型分为哪两类
    css中需要更小的字体如何实现
    一些细节注意点
    数值转换题
    如何用分支结构计算年份
    Scout YYF I
    D. AND, OR and square sum
  • 原文地址:https://www.cnblogs.com/loganv/p/4885433.html
Copyright © 2011-2022 走看看