Tuesday, February 21, 2012

Prevent tap event on UITextView



2012-02-21 11:59:18.106 textView[20977:fe03] ; target= <(action=delayed:, target=)>>





2012-02-21 11:59:18.107 textView[20977:fe03] ; target= <(action=handlePan:, target=)>>



2012-02-21 11:59:18.108 textView[20977:fe03] ; target= <(action=oneFingerTripleTap:, target=)>; numberOfTapsRequired = 3>



2012-02-21 11:59:18.108 textView[20977:fe03] ; target= <(action=oneFingerDoubleTap:, target=)>; numberOfTapsRequired = 2>



2012-02-21 11:59:18.109 textView[20977:fe03] ; target= <(action=twoFingerSingleTap:, target=)>; numberOfTouchesRequired = 2>



2012-02-21 11:59:18.123 textView[20977:fe03] ; target= <(action=tapAndAHalf:, target=)>>



2012-02-21 11:59:18.124 textView[20977:fe03] ; target= <(action=twoFingerRangedSelectGesture:, target=)>>



2012-02-21 11:59:18.124 textView[20977:fe03] ; target= <(action=oneFingerTap:, target=)>>



2012-02-21 11:59:18.129 textView[20977:fe03] ; target= <(action=loupeGesture:, target=)>>




Above the list of gestureRecogniser on UITextView. I need to prevent event: twoFingerSingleTap on UITextView, but only this event. there is possible?

2 comments:

  1. UITextView, as any other subclass of UIView, has gestureRecognizers property, which contains an NSArray of all gesture recognizers attached to a view. Enumerate this array, find recognizer you're looking for and disable it.

    ReplyDelete
  2. You need something like:

    for (UIGestureRecognizer *g in myTextView.gestureRecognizers)
    {
    if ([g isKindOfClass:[UITapGestureRecognizer class]])
    {
    if (([(UITapGestureRecognizer *)g numberOfTouchesRequired] == 2) && ([(UITapGestureRecognizer *)g numberOfTapsRequired] == 1))
    {
    [g setEnabled: NO];
    }
    }
    }

    ReplyDelete