Pick & pop force touch gesture not working sometimes

370 Views Asked by At

I have a view controller which registers for previewing in viewDidLoad method:

- (void) viewDidLoad
{
    [super viewDidLoad];

    if ([self.traitCollection respondsToSelector:@selector(forceTouchCapability)] &&
        (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable))
    {
        [self registerForPreviewingWithDelegate:self sourceView:self.view];
    }
}

but sometimes force touch is not recognized as if view controller didn't register for previewing.

1

There are 1 best solutions below

2
On BEST ANSWER

The problem was starting the app from state restoration. Fix: place preview registering code in viewWillAppear:

- (void) viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    if ([self.traitCollection respondsToSelector:@selector(forceTouchCapability)] &&
        (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable))
    {
        [self registerForPreviewingWithDelegate:self sourceView:self.view];
    }
}

When viewDidLoad is called from state restoration, the timing is right for registering for previewing.