iOS 3D Touch开发 很良心的版本原创!

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/werctzzz/article/details/50337217

之前一直在忙着维护项目,偶然的一天闲着玩手机玩到3Dtouch,看着效果挺不错的

于是就尝试着搜索了一下相关的文案,结果除了官网给的全英文api以外国内的基本都

是互相抄袭,我搜了37篇文章,29篇相似度惊人,而且仅有一个技术网的给出来如何

利用3Dtouch跳转指定页面(还是没处理好的模态)

那今天就来给大家看看3Dtouch的构成

首先说说官方版本的,咱们在plist 文件里面添加,如下:


然后编译,在6s上效果如下:


这就弄好了~挺快的是不?但是这样的做法还是有局限性~那么我们该怎么做呢?

接下来第二个方法:手动创建

- (void)creatIconTouch
{
    // set item image
    UIApplicationShortcutIcon *icon1 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"QR_icon"];
    UIApplicationShortcutIcon *icon2 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"search"];
    UIApplicationShortcutIcon *icon3 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"refund"];
    UIApplicationShortcutIcon *icon4 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"help_icon"];
    
    // create several (dynamic) shortcut items
    UIMutableApplicationShortcutItem *item = [[UIMutableApplicationShortcutItem alloc]initWithType:@"pay" localizedTitle:@"決済" localizedSubtitle:@"支付" icon:icon1 userInfo:nil];
    UIMutableApplicationShortcutItem *item1 = [[UIMutableApplicationShortcutItem alloc]initWithType:@"search" localizedTitle:@"照会" localizedSubtitle:@"查询" icon:icon2 userInfo:nil];
    UIMutableApplicationShortcutItem *item2 = [[UIMutableApplicationShortcutItem alloc]initWithType:@"refound" localizedTitle:@"返金" localizedSubtitle:@"退款" icon:icon3 userInfo:nil];
    UIMutableApplicationShortcutItem *item3 = [[UIMutableApplicationShortcutItem alloc]initWithType:@"help" localizedTitle:@"ヘルプ" localizedSubtitle:@"帮助" icon:icon4 userInfo:nil];
    
    // add all items to an array
    NSArray *items = @[item,item1, item2, item3];
    
    // add the array to our app
    [UIApplication sharedApplication].shortcutItems = items;
}
这个方法是要放在APPdelegate里面,在didfinishlaunching里面调用就行,效果如下:

(因为是公司项目对外的logo就不宜放出了)


这些创建显示点击都没问题了,但发现没?点击的时候只能进去首页,那接下来大家来看看怎么调到指定页

在iOS9.0以后appdelegat里面有专用的方法:

#pragma mark - 3DTouch Action
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler {
    // react to shortcut item selections
    NSLog(@"点击了 %@.", shortcutItem.localizedTitle);
}
这就是点击事件的方法,到了这一步大家不是说不就跳转呗,写一个模态过nav push进去啊。

no~其实每个开发者都知道,只不过在这里会迷糊,

<span style="font-size:14px;">ViewController * VC = [[ViewController alloc]init];
    Nav = [[UINavigationController alloc]initWithRootViewController:VC];
    [self.window setRootViewController:Nav];</span>
一般来说都这么创建的,然后你就想 self.window.rootViewController.navigationController push 这么跳转?(如果说你的整个项目是模态的话,随意你怎么模态)运行原理来说这样是行不通的,就在你添加的时候,把上面提到的nav设置成属性,按照代码执行顺序,Nav已经是你的window 的rootVC了~所以跳转的时候,如下:(记得判断你的item)

if ([shortcutItem.localizedTitle isEqualToString:@"決済"]) {
            Payment01Controller * vc = [[Payment01Controller alloc]init];
            [Nav pushViewController:vc animated:YES];
        }

大功告成,慢慢的玩去吧~之后我会详细的写一篇页面内的3Dtouch,敬请期待



阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页