检查iOS9设备是否支持3D触控并启用

Pro*_*gga 13 iphone ios 3dtouch

我试图访问特征集合并检查"forceTouchCapability",但"forceTouchCapability"只是检查设备是否是iOS 9.0或更高版本.

因此,这意味着在iOS 9的任何设备上,强制触摸都是"可用的".我需要一种方法来检查,如果3D触摸实际上是支持用户设备(iPhone 6S)上,我需要确保三维触控选项在辅助功能设置启用实际.

Pro*_*gga 23

我不小心投forceTouchCapability了一个BOOL(用它作为我的方法的返回值,设置为返回一个布尔值).我需要检查是否forceTouchCapability等于UIForceTouchCapabilityAvailable.

代替:

return [[MyView traitCollection] forceTouchCapability];
Run Code Online (Sandbox Code Playgroud)

我需要:

return [[MyView traitCollection] forceTouchCapability] == UIForceTouchCapabilityAvailable;
Run Code Online (Sandbox Code Playgroud)


aml*_*szk 12

如果你实现这个UIViewController,时间很重要.签入viewDidLoad将在生命周期后期返回Unknown时返回Available.

- (void)traitCollectionDidChange:(nullable UITraitCollection *)previousTraitCollection {
    [self checkForForceTouch];
}

- (void)checkForForceTouch {
    if ([self.traitCollection respondsToSelector:@selector(forceTouchCapability)] &&
        self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable) {
        NSLog(@"Force touch found");
    }
}
Run Code Online (Sandbox Code Playgroud)