Cancellation Callback in Peek and Pop

I have implemented a standard Peek and Pop for previewing content from a grid with 3D Touch. The grid auto-scrolls, and I want to stop the animation when the user puts their finger down, then start it again when they lift up their finger. This was working well before implementing Peek and Pop, using touchesBegan/Moved/Ended/Cancelled on the cell view in the grid.


After implementing Peek and Pop, the grid starts scrolling again once the Peek begins, because touchesCancelled gets called on the cell view. Is there a non-hacky way to detect that the Peek and Pop is active (or that the user's finger is still on the screen, and get a callback when it leaves the screen)? I'm hoping there's something eloquent. Ultimately, I wish there was a delegate method for this in the Peek and Pop API.


// This is when the Peek begins:

- (UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location;


// This is when the Peek ends, if they press down fully:

- (void)previewingContext:(id<UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit;

// Other actions can be handled in the UIPreviewActionItem completion handlers

// ...but what if the user cancels the Peek by lifting up their finger? A method like THIS would be perfect, but it doesn't exist:

- (void)previewingContext:(id<UIViewControllerPreviewing>)previewingContext didDismissViewController:(UIViewController *)cancelledViewController;

Cancellation Callback in Peek and Pop
 
 
Q