I tested the delayTouchesBegan method with double labels, but I found that a single click received by the table is then delayed, which makes the table interaction less susceptible to the user and possibly annoying.
My solution is a bit pedestrian, but I use a timer to detect taps in the didSelectRowAtIndexPath method. I record the tap counter "1" for the first press, and if the user does not press again for 0.2 seconds, it displays the selected item. If the user knocked for 0.2 seconds to count the tap "2", then I show another element (action sheet). I reset the tap count every time.
This method uses more code, but provides a quick response from the interface, and the user does not need to know what is going on behind the scenes - just that the user interface is reacting.
source share