我试图把一些3D触摸到应用程序中,我已经在运行到一个奇怪的问题forceTouchCapability检查返回nil上viewDidLoad而不是在viewWillAppear/viewDidAppear.
我知道这只适用于iOS 9+,因此我添加了检查以验证traitCollection视图控制器上的属性是否响应,forceTouchCapability如下所示:
- (void)loadView {
self.view = [[MyView alloc] init];
}
- (void)viewDidLoad {
[super viewDidLoad];
// Checking the force touch availability here
if ([self.traitCollection respondsToSelector:@selector(forceTouchCapability)] &&
self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable) {
// This won't get called because forceTouchCapability is returning nil
// which corresponds to UIForceTouchCapabilityUnknown
[self registerForPreviewingWithDelegate:self sourceView:self.view];
}
}
Run Code Online (Sandbox Code Playgroud)
在LLDB中,在if语句中有一个断点,输入对应的po [self.traitCollection forceTouchCapability]返回值.但是,本身并非如此.nilUIForceTouchCapabilityUnknowntraitCollectionnil
根据UIForceTouchCapabilityUnknown的文档:
UIForceTouchCapabilityUnknown: The availability of …