2

iOS 9.0forceUITouch类中添加了新属性。对于新 iPhone (6S),这可以获取用户手指压力的值。

属性的值force似乎设置在 0 到 6.66667 之间。

iOS 9 还添加了 peek and pop 功能 - 当用户在某些控件上应用特定的手指压力级别时,会触发程序操作。

我的问题是:就 的force财产价值而言,这些压力水平(用于窥视和弹出)是UITouch多少?

换句话说,我需要为force属性设置阈值,以使用户需要应用与使用“窥视”(或弹出)功能时相同的手指压力水平?

4

2 回答 2

2

您可以尝试force使用以下函数来观察该值。看起来,对于 peek,force值是 1.33(标准化力 = 0.20),对于 pop,force值是 5.0(标准化力 = 0.75)。在 peekforce级别,它触发peekUIViewControllerPreviewingDelegate方法(UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location

- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    [super touchesMoved:touches withEvent:event];

    UITouch *touch = [touches anyObject];

    CGFloat maximumPossibleForce = touch.maximumPossibleForce;
    CGFloat force = touch.force;

    NSLog(@"***** force value : %f", force);

    CGFloat normalizedForce = force/maximumPossibleForce;

    NSLog(@"Normalized force : %f", normalizedForce);

    if (normalizedForce > 0.75)
    {
        // Pop
    }
    else if (normalizedForce > 0.20)
    {
        // Peek
    }
}
于 2016-02-22T08:02:40.317 回答
-1

默认情况下,您不需要为 pop 和 peek 操作设置强制阈值,值是在框架中预定义的。您可以参考此链接 https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/Adopting3DTouchOniPhone/3DTouchAPIs.html ,了解如何在视图控制器中实现 peek 和 pop。如果您想自定义何时查看和弹出,那么您应该检查不推荐的力值。根据苹果文档

触摸的力度,其中值 1.0 表示平均触摸的力度(由系统预先确定,不是用户特定的)。

Peek 基本上是用于显示预览,您必须为此执行各种操作。您可以在此处获取示例代码https://developer.apple.com/library/ios/samplecode/ViewControllerPreviews/Introduction/Intro.html。弹出是正常动作。

于 2016-01-30T04:30:21.577 回答