Table cells stay in delete-confirmation mode when they are swiped left and almost back in one motion

Originator:jjc1138
Number:rdar://31235143 Date Originated:2017-03-24
Status:Open/Duplicate Resolved:
Product:iOS + SDK Product Version:iOS 10.2.1 (14D27)
Classification:UI/Usability Reproducible:Always
 
Area:
UIKit

Summary:
When a UITableViewCell is swiped left it enters the deletion-confirmation mode and receives `setEditing(_:animated:)` and `willTransition(to:)` and `didTransition(to:)` messages informing it of that. If the user then taps elsewhere it exits that mode and receives the corresponding messages telling it that it has exited that mode.

The problem is that there's a way of attempting to exit the deletion-confirmation mode (see steps to reproduce and attached video) which hides the 'Delete' button and puts the cell back in its normal position, but doesn't actually exit the mode (it doesn't send the messages telling the cell that it has exited the mode, and still requires the user to tap on something before the UI responds normally).

Steps to Reproduce:
1. Open attached minimal test Xcode project
2. Build and run on a device or the simulator
3. Swipe one of the table rows to the left to reveal the 'Delete' button, but don't release the swiping finger
4. Observe that the table contents update to show that the cell is in the correct mode
4. Still without removing your finger from the screen (that is a crucial part) move your finger most of the way to the right again so that the 'Delete' button is mostly obscured (for example, leave just the last 'e' visible) and then remove the finger from the screen
5. The row will animate back to its normal position and the 'Delete' button will be hidden, but the cell contents will show that it is still in the deletion-confirmation mode
6. Tap somewhere on the screen and observe that the cell updates to show that it has now exited the deletion-confirmation mode
7. Try swiping a row to the left, then releasing, then tapping elsewhere to see that the cell updates as expected in that case
8. Try swiping a row to the left, and then without releasing swipe it all the way back to the right, and then release to see that the cell also updates as expected in that case

Expected Results:
The cell should exit delete-confirmation mode when following steps 1-5 above

Actual Results:
The cell appears to exit delete-confirmation mode, but doesn't

Version:
iOS 10.2.1 (14D27)

Notes:


Configuration:
iPhone 7 Plus (NN4M2ZD/A), iPad mini 2 (ME276B/A)

Attachments:
'Table cells stay in delete-confirmation mode.mov' and 'Staying In Swipe To Delete Confirmation Mode Bug.zip' were successfully uploaded.

Comments


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!