私はこれが9+ので、私は、ビューコントローラのtraitCollection
プロパティは、次のようにforceTouchCapability
に応答することを確認するためのチェックを追加しましたiOS版でのみ利用可能であることを承知している:
- (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];
}
}
if
ステートメントのブレークポイントでは、po [self.traitCollection forceTouchCapability]
と入力するとnil
が返され、これはUIForceTouchCapabilityUnknown
に対応します。ただし、traitCollection
自体はnil
ではありません。
はUIForceTouchCapabilityUnknownのドキュメントによると:
UIForceTouchCapabilityUnknown: The availability of 3D Touch is unknown. For example, if you create a view but have not yet added it to your app’s view hierarchy, the view’s trait collection has this value.
ビューは、この時点で階層に追加されていませんか?
誰もがこの問題に遭遇し、これを回避する方法が不思議ですか?私はviewDidAppear
にこれを追加することを避けたいと思います。それが助け場合
、私は、ビューはまだビュー階層に追加されていないのXcode 7.2
あなたは素晴らしいです、ありがとう! – ajfigueroa
@bpapa良い解決策。 poの代わりにpの使用法を推薦することを検討してください。 pはちょうど内側にあり、poは実行に使用されます –