Refactoring: Added a timeout timer and set status to UIGestureRecognizerStateFailed when it's necessary.