2012-06-26 2 views
0

Я пытаюсь игнорировать мой gestureRecognizer если вид прикоснулся имеет определенных классов (а именно UIButton и UIBarButtonItem), используя это:gestureRecognizer: shouldReceiveTouch: реализация неудачу

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { 

    NSLog(@"%@", touch.view); 

    if ([touch.view isKindOfClass:[UIButton class]]){ 
    return NO; 
    } else if ([touch.view isKindOfClass:[UIBarButtonItem class]]){ 
    return NO; 
    } 
    return YES; // handle the touch 
} 

Это прекрасно работает для UIButton. Он не работает для UIBarButtonItem. Мой NSLog результатов, когда UIBarButtonItem прикосновения являются:

<UIToolbarTextButton: 0x7b8f500; frame = (4 0; 60 40); opaque = NO; layer = <CALayer: 0x7b8f900>> 2012-06-26 12:09:48.021 

Я попытался изменил [UIBarButtonItem class] к [UIToolBarTextButton class], но так как это недокументированная класс, я не могу это сделать. Любой другой способ сделать это?

Спасибо.

+0

Вы попробовали 'UIBarItem'? –

+0

Я просто сделал, это тоже не работает. –

+0

Попробуйте игнорировать весь бар !!! – trumpetlicks

ответ

0

Если UIBarButtonItem находится в UINavigationBar, то вам нужно будет создать подкласс UINavigationBar и реализовать другой

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { 

, чтобы поймать этот жест для UIBarButtonItem. Могут быть другие способы достижения этого.