iOS 3D Touch程序化实现

8

iPhone 6s/iPhone 6s plus引入了3D Touch技术,我想知道我们是否能够访问与3D Touch相关的API并在我们的应用程序中进行编程。有没有人有一些想法?


4
你是否查看了任何文档、文章或示例代码?https://developer.apple.com/ios/3d-touch/ - Aaron Brager
2个回答

11
你将能够在应用程序中使用3D Touch功能。在UITouch类中会有一个名为force的新属性,它将保存触点事件的强度。1.0被定义为“普通触摸”。
来源:https://developer.apple.com/ios/3d-touch/

感谢指南。 - tounaobun
硬按的值是多少? - Harry Ng
@HarryNg 可能是大于1.0的任何版本。不过我不确定。我猜你得进行一些测试才能找出来。 - ddsnowboard
@ddsnowboard,非常感谢您的快速回复。我认为我们都需要等待设备发布。 - Harry Ng
我制作了一个可能会引起兴趣的力触手势识别器:https://github.com/foggzilla/UIContinuousForceTouchGestureRecognizer。UITouch力度为1.0被认为是标准按压,> 1.0则被认为更有力。 - foggzilla

2
我正在分享按应用程序图标的源代码,以在列表中填充4个项目。 步骤1:- 在appDelegate.m中导入类。
import sys/utsname.h

步骤2:-

#pragma MARK for Get Machine Name

-  (NSString *) machineName {
    struct utsname systemInfo;
    uname(&systemInfo);
    return [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    if([[self machineName] isEqualToString:@"iPhone8,2"]|| [[self machineName] isEqualToString:@"iPhone8,1"]) {
        [self addEventsFor3DTouchEvents];
    }
    return YES;
}


#pragma MARK for Adding Action for Three D Touch Eventes

- (void) addEventsFor3DTouchEvents {
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9.0) {
        UIApplicationShortcutItem *item1 = [[UIApplicationShortcutItem alloc] initWithType:@"dynamic1" localizedTitle:TITLE_NAME_1 localizedSubtitle:@"" icon:[UIApplicationShortcutIcon iconWithTemplateImageName:TITLE_IMAGE_NAME_1] userInfo:nil];

        UIApplicationShortcutItem *item2 = [[UIApplicationShortcutItem alloc] initWithType:@"dynamic1" localizedTitle:TITLE_NAME_2 localizedSubtitle:@"" icon:[UIApplicationShortcutIcon iconWithTemplateImageName:TITLE_IMAGE_NAME_2] userInfo:nil];

        UIApplicationShortcutItem *item3 = [[UIApplicationShortcutItem alloc] initWithType:@"dynamic1" localizedTitle:TITLE_NAME_3 localizedSubtitle:@"" icon:[UIApplicationShortcutIcon iconWithTemplateImageName:TITLE_IMAGE_NAME_3] userInfo:nil];

        UIApplicationShortcutItem *item4 = [[UIApplicationShortcutItem alloc] initWithType:@"dynamic1" localizedTitle:TITLE_NAME_4 localizedSubtitle:@"" icon:[UIApplicationShortcutIcon iconWithTemplateImageName:TITLE_IMAGE_NAME_4] userInfo:nil];

        [[UIApplication sharedApplication] setShortcutItems: @[ item1, item2, item3, item4 ]];
    }
}


#pragma mark - 3DTouch Delegate Methods

- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler {
    [self moveThrough3DTouch:shortcutItem];
}

#pragma MARK for Handling Action for Three D Touch Events

- (void)moveThrough3DTouch:(UIApplicationShortcutItem *)temp {

    if ([temp.localizedTitle isEqualToString:TITLE_NAME_1])  {

            [self.tabBarController setSelectedIndex:0];
    } else if([temp.localizedTitle isEqualToString:TITLE_NAME_2]) {

            [self.tabBarController setSelectedIndex:1];
    } else if([temp.localizedTitle isEqualToString:TITLE_NAME_3]) {

            [self.tabBarController setSelectedIndex:2];
    } else if([temp.localizedTitle isEqualToString:TITLE_NAME_4]) {

            [self.tabBarController setSelectedIndex:3];
    }
}

我在我的应用程序中使用Tab Bar控制器,如果想要移动到视图控制器:

- (void) moveToControllerScene {
        UIStoryboard *storyboard              = [UIStoryboard storyboardWithName:STORY_BOARD_IDENTIFIER bundle:nil];
        YOUR_CONTROLLER_OBJECT *obj           = [storyboard instantiateViewControllerWithIdentifier:@"YOUR_CONTROLLER_OBJECT"];
        [navController pushViewController:obj animated:YES];
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接