小编ajf*_*roa的帖子

forceTouchCapability返回nil

我试图把一些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 …

objective-c ios ios9 3dtouch

10
推荐指数
1
解决办法
2372
查看次数

标签 统计

3dtouch ×1

ios ×1

ios9 ×1

objective-c ×1