3DTouch 使用

作者: 娜娜的世界123 | 来源:发表于2017-03-10 11:35 被阅读0次
  • iOS9之后使用3DTouch
  • 3DTouch功能主要分为两大块:主屏幕Icon上的Quick Action;
    Peek(预览)和Pop(跳至预览的详细界面)

实现 Quick Action

实现方式有两种,一种是在工程文件info.plist里静态设置,另一种是代码的动态实现
最多只能加4个item,无论使用哪种方法创建

静态方法
image.png
动态方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    //创建快捷选项
    UIApplicationShortcutItem *item0 = [[UIApplicationShortcutItem alloc]initWithType:@"com.share" localizedTitle:@"分享" localizedSubtitle:@"分享副标题" icon:[UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeShare] userInfo:nil];

    UIApplicationShortcutItem *item1 = [[UIApplicationShortcutItem alloc]initWithType:@"com.other" localizedTitle:@"其他" localizedSubtitle:nil icon:[UIApplicationShortcutIcon iconWithTemplateImageName:@"test"] userInfo:nil];
    
    //添加到快捷选项数组
    [UIApplication sharedApplication].shortcutItems = @[item0, item1];
    

    // 首次启动App
    UIApplicationShortcutItem *shortcutItem = [launchOptions valueForKey:UIApplicationLaunchOptionsShortcutItemKey];

    if (shortcutItem) {
        // 根据不同标识执行不同操作
        if([shortcutItem.type isEqualToString:@"com.share"]){
            
        } else if ([shortcutItem.type isEqualToString:@"com.other"]) {
            
        }
        
        return NO;
    }
    
    return YES;
}

// 如果APP没被杀死,还存在后台,点开Touch会调用该代理方法
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler {
    if (shortcutItem) {

        if([shortcutItem.type isEqualToString:@"com.share"]){

        } else if ([shortcutItem.type isEqualToString:@"com.other"]) {

        } 
    }

    if (completionHandler) {
        completionHandler(YES);
    }
}

Peek和Pop的实现

判断是否支持

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    
    if (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable) {
        
    }
}


- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {
    if (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable) {
        
    }
}

1、注册(在哪个页面上使用该功能就注册在哪个页面上)

self registerForPreviewingWithDelegate:selfsourceView:self.mainTableView];

2、遵守UIViewControllerPreviewingDelegate
3、实现代理

//peek(预览)
- (UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location
{
   
        /** 转换坐标 */
        CGPoint p = [self.maintTableview convertPoint:CGPointMake(location.x, location.y ) fromView:self.view];
        /** 通过坐标活的当前cell indexPath */
        NSIndexPath *indexPath = [self.maintTableview indexPathForRowAtPoint:CGPointMake(p.x, p.y + 64)];
        /** 获得当前cell */
        UITableViewCell *cell = [self.maintTableview cellForRowAtIndexPath:indexPath];
        
        MyPreviewingViewController *peekViewController = [[MyPreviewingViewController alloc] init];
    
        peekViewController.preferredContentSize = CGSizeMake(0.0, 300);
        previewingContext.sourceRect = cell.frame;
        
        return peekViewController;
    
}

//pop(按用点力进入)
- (void)previewingContext:(id <UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit {
    
    [self showViewController:viewControllerToCommit sender:self];
}

预览界面上滑弹出框

image.png

重写previewActionItems

#pragma mark - Preview Actions
- (NSArray<id<UIPreviewActionItem>> *)previewActionItems{

    // 生成UIPreviewAction
    UIPreviewAction *action1 = [UIPreviewAction actionWithTitle:@"Action 1" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
        NSLog(@"Action 1 selected");
    }];

    UIPreviewAction *action2 = [UIPreviewAction actionWithTitle:@"Action 2" style:UIPreviewActionStyleDestructive handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
        NSLog(@"Action 2 selected");
    }];

    UIPreviewAction *action3 = [UIPreviewAction actionWithTitle:@"Action 3" style:UIPreviewActionStyleSelected handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
        NSLog(@"Action 3 selected");
    }];

    UIPreviewAction *tap1 = [UIPreviewAction actionWithTitle:@"tap 1" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
        NSLog(@"tap 1 selected");
    }];

    UIPreviewAction *tap2 = [UIPreviewAction actionWithTitle:@"tap 2" style:UIPreviewActionStyleDestructive handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
        NSLog(@"tap 2 selected");
    }];

    UIPreviewAction *tap3 = [UIPreviewAction actionWithTitle:@"tap 3" style:UIPreviewActionStyleSelected handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
        NSLog(@"tap 3 selected");
    }];
    // 塞到UIPreviewActionGroup中
    NSArray *actions = @[action1, action2, action3];
    NSArray *taps = @[tap1, tap2, tap3];
    UIPreviewActionGroup *group1 = [UIPreviewActionGroup actionGroupWithTitle:@"Action Group" style:UIPreviewActionStyleDefault actions:actions];
    UIPreviewActionGroup *group2 = [UIPreviewActionGroup actionGroupWithTitle:@"Tips Group" style:UIPreviewActionStyleDestructive actions:taps];
    NSArray *group = @[group1,group2];

    return group;

}

相关文章

  • 3DTouch 使用

    iOS9之后使用3DTouch 3DTouch功能主要分为两大块:主屏幕Icon上的Quick Action;Pe...

  • 详解3DTouch的使用

    3DTouch的简单使用. 介绍 3DTouch是iOS9的时候出来,对硬件也有要求,也就是说只有iPhone6s...

  • iOS 给App添加3DTouch功能

    给App添加3DTouch的多个Item 给某个页面添加3DTouch 3DTouch添加页面 预览页面

  • Swift开发之3DTouch实用演练

    Swift开发之3DTouch实用演练 Swift开发之3DTouch实用演练

  • 3DTouch简单使用

    最近看到有朋友试了一下3DTouch的功能,于是仿照他的代码也试着写了一下。原文链接:kaishener的博客 先...

  • 3DTouch的使用

    1、创建3DTouch的两种方式 静态标签静态标签是我们在项目的配置plist文件中配置的标签,在用户安装程序后就...

  • IOS 3DTouch技术使用

    IOS 3DTouch技术使用 简介 3D Touch是一种立体触控技术,被苹果称为新一代多点触控技术,是在App...

  • iOS 3DTouch的使用

    一.3DTouch的主要作用: 0.demo地址在最下面 1.Home Screen Quick Actions ...

  • ios 3DTouch 官方工程OC版

    ios 3DTouch 官方工程OC版 想要看一下 官方 的3DTouch教程,发现例子竟然只有swift版本的,...

  • 3D Touch tableview的应用

    事过几天来写3DTouch在tableview里面的使用了,用力点击cell触发的事件,那么我就直接开始写了

网友评论

    本文标题:3DTouch 使用

    本文链接:https://www.haomeiwen.com/subject/rzjngttx.html