3D touch — ios9新特新开发

原创 2016年09月13日 18:15:42

iOS9提供了两种屏幕标签,分别是静态标签和动态标签(Home Screen Quick Actions)。
这里写图片描述

静态标签

打开我们项目的plist文件,添加如下项(选择框中并没有,需要我们手工敲上去)
这里写图片描述
图片资源为透明底图

先添加了一个UIApplicationShortcutItems的数组,这个数组中添加的元素就是对应的静态标签,在每个标签中我们需要添加一些设置的键值:

必填项—-

UIApplicationShortcutItemType 这个键值设置一个快捷通道类型的字符串

UIApplicationShortcutItemTitle 这个键值设置标签的标题

选填项—-

UIApplicationShortcutItemSubtitle 设置标签的副标题

UIApplicationShortcutItemIconType 设置标签Icon类型

UIApplicationShortcutItemIconFile 设置标签的Icon文件

UIApplicationShortcutItemUserInfo 设置信息字典(用于传值)

动态标签
AppDelegate.m文件中加如下

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    // 1.创建UIWindow
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:[[TTTableViewController alloc] init]];

    self.window.rootViewController = nav;
    //动态添加快捷启动
    UIApplicationShortcutIcon * icon = [UIApplicationShortcutIcon iconWithTemplateImageName:@"cash_icon"];
    UIApplicationShortcutItem *item = [[UIApplicationShortcutItem alloc]initWithType:@"shortcutTypeTwo" localizedTitle:@"优惠券" localizedSubtitle:@"我的优惠券" icon:icon userInfo:nil];
    [[UIApplication sharedApplication]setShortcutItems:@[item]];

    // 让UIWindow显示出来(让窗口成为主窗口 并且显示出来)
    // 一个应用程序只能有一个主窗口
    [self.window makeKeyAndVisible];

    return YES;
}

接受标示跳转事件

- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler {

    UINavigationController *nav = (UINavigationController *)self.window.rootViewController;
   TTDetailViewController *detailVC = [[TTDetailViewController alloc] init];

    if ([shortcutItem.type isEqualToString:@"shortcutTypeOne"]) {
        detailVC.navTitle = @"one";

    } else if ([shortcutItem.type isEqualToString:@"shortcutTypeTwo"]) {
        detailVC.navTitle = @"two";
    }

    [nav pushViewController:detailVC animated:YES];
}

在需要添加3Dtouch 的页面 ,判断是否可用添加

if (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable) {
        NSLog(@"3D Touch  可用!");

        [self registerForPreviewingWithDelegate:self sourceView:self.view];
    } else {
        NSLog(@"3D Touch 无效");
    }

遵循并实现UIViewControllerPreviewingDelegate

#pragma mark - UIViewControllerPreviewingDelegate

- (UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location {
    self.selectedCell = [self searchCellWithPoint:location];
    previewingContext.sourceRect = self.selectedCell.frame;

    TTDetailViewController *detailVC = [[TTDetailViewController alloc] init];
    detailVC.delegate = self;
    detailVC.navTitle = self.selectedCell.textLabel.text;
    return detailVC;
}

- (void)previewingContext:(id<UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit {
    [self tableView:self.tableView didSelectRowAtIndexPath:[self.tableView indexPathForCell:self.selectedCell]];
}

// 根据一个点寻找对应cell并返回cell
- (UITableViewCell *)searchCellWithPoint:(CGPoint)point {
    UITableViewCell *cell = nil;
    for (UIView *view in self.tableView.subviews) {
        NSString *class = [NSString stringWithFormat:@"%@",view.class];
        if (![class isEqualToString:@"UITableViewWrapperView"]) continue;
        for (UIView *tempView in view.subviews) {
            if ([tempView isKindOfClass:[UITableViewCell class]] && CGRectContainsPoint(tempView.frame, point)) {
                cell = (UITableViewCell *)tempView;
                break;
            }
        }
        break;
    }
    return cell;
}   

打开预览的视图的.m文件,TTDetailViewController.m 文件中处理

- (NSArray<id<UIPreviewActionItem>> *)previewActionItems {
    //
    UIPreviewAction *action1 = [UIPreviewAction actionWithTitle:@"删除" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
        if ([self.delegate respondsToSelector:@selector(detailViewController:DidSelectedDeleteItem:)]) {
            NSLog(@"删除");
        }
    }];
    //
    UIPreviewAction *action2 = [UIPreviewAction actionWithTitle:@"返回" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
        if ([self.delegate respondsToSelector:@selector(detailViewControllerDidSelectedBackItem:)]) {
            NSLog(@"返回");
        }
    }];

    NSArray *actions = @[action1,action2];

    return actions;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

新的触摸体验——iOS9的3D Touch

一、引言         在iphone6s问世之后,很多果粉都争先要体验3D Touch给用户带来的额外维度上的交互,这个设计之所以叫做3D Touch,其原理上是增加了一个压力的感触,通...
  • u012259496
  • u012259496
  • 2015年10月13日 17:48
  • 183

新的触摸体验——iOS9的3D Touch

一、引言         在iphone6s问世之后,很多果粉都争先要体验3D Touch给用户带来的额外维度上的交互,这个设计之所以叫做3D Touch,其原理上是增加了一个压力的感触,通...
  • Mr__Wen
  • Mr__Wen
  • 2015年10月09日 11:04
  • 1466

IOS开发之 一起用Swift来玩一玩3D Touch

Swift 2.3 IOS 8.0 XCode 8.0 添加入口标签在这里只说下静态的好了,暂时还用不到动态的,e.g.UIApplicationShortcutItems ...
  • sbt0198
  • sbt0198
  • 2017年02月07日 14:45
  • 966

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

之前一直在忙着维护项目,偶然的一天闲着玩手机玩到3Dtouch,看着效果挺不错的 于是就尝试着搜索了一下相关的文案,结果除了官网给的全英文api意外国内的基本都 是互相抄袭,我搜了37篇文章,29篇相...
  • werctzzz
  • werctzzz
  • 2015年12月17日 09:51
  • 3135

ios9 如何集成ios9 里面的3D Touch

1.前言     随着6S的到来,3DTouch被各大热门APP迅速普及,博主亲自体验后,发现使用便捷性大幅提高,随后自己照着文档,写了个Demo出来,分享给大家,希望能对有需要的朋友提供有一些帮助。...
  • zhaoyya
  • zhaoyya
  • 2015年12月28日 09:23
  • 273

iOS9 3D Touch入门与实践

在iOS 9中,新iPhone将第三维度添加到了用户界面。 用户现在可以用力摁下主屏按钮来快捷调出应用提供的功能菜单。 在应用中,用户现在可以用力摁下视图以查看更多内容的预览并且快捷访问一些功能。...
  • lyqfly07
  • lyqfly07
  • 2015年11月19日 17:43
  • 381

iOS9系列专题——3D Touch

新的触摸体验——iOS9的3D Touch 一、引言         在iphone6s问世之后,很多果粉都争先要体验3D Touch给用户带来的额外维度上的交互,这个设计之所...
  • u014220518
  • u014220518
  • 2016年01月13日 09:35
  • 404

ios开发——iOS9 3D Touch 使用教程

本教程为纯代码,亦可以使用info.plist文件实现3D Touch功能 代码如下 通过self.traitCollection.forceTouchCapability方法可以判断当前设备是...
  • zzzzzdddddxxxxx
  • zzzzzdddddxxxxx
  • 2016年02月25日 16:22
  • 509

iOS9系列专题一——3D Touch

转自珲少的博客 原文地址:http://my.oschina.net/u/2340880/blog/511509一、引言 在iphone6s问世之后,很多果粉都争先要体验3D Touch给用户...
  • young_shu
  • young_shu
  • 2016年04月04日 18:37
  • 52

iOS9系列专题一——3D Touch

摘要 iOS9新增加的触摸机制3D Touch,可以带给用户轻按重按的不同触摸体验。 iOS9 3DTouch iOS9适配 iOS9新特性 目录[-] 新的触摸体验...
  • wsw845234177
  • wsw845234177
  • 2015年11月23日 14:20
  • 193
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:3D touch — ios9新特新开发
举报原因:
原因补充:

(最多只允许输入30个字)