2012-06-10 4 views
2

Я делаю настройку, которая включает в себя всплывающее предупреждение, когда пользователь удваивает значок в режиме редактирования. Я попытался закреплять наПроверка двойного касания в режиме редактирования

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 

из SBIcon и затем

{ 
    %orig; 
    UITouch *touch = [touches anyObject]; 
    if (touch.tapCount == 2 && [[objc_getClass("SBIconController") sharedInstance] isEditing]) 
    { 
     //pop an alert and do stuff 
    } 
} 

Но это, кажется, не работает. Может ли кто-нибудь сказать мне, что не так с этим, и предложить альтернативные способы достижения этого?

EDIT: Я использую теос, если это имеет значение.

+1

Просто FYI вместо 'objc_getClass()' use 'NSClassFromString()', который принимает объект типа 'NSString'. Это немного безопаснее. –

+1

Или, скорее, я бы рекомендовал использовать '@class SBIconController;' в верхней части вашего файла реализации, так как вы, похоже, предположили, что класс будет существовать во время выполнения в любом случае, а затем просто прямо вверх [SBIconController sharedInstance] '. 'NSClassFromString()' и 'objc_getClass()' более полезны для динамически скомпонованных имен классов, а их использование не позволяет избежать времени поиска. –

ответ

1

Я предлагаю вам использовать распознаватель жеста. Он более конкретный и работает очень аккуратно.

Для получения дополнительной информации вы можете проверить эту ссылку: http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/GestureRecognizers/GestureRecognizers.html

+0

Спасибо. Но какой метод я бы подключил для добавления UITapGestureRecogniser? – cortex

+0

Эта ссылка поможет вам ... http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UITapGestureRecognizer_Class/Reference/Reference.html#//apple_ref/occ/cl/UITapGestureRecognizer, и вы можете найти образец проекта по этой ссылке ... https://github.com/jamessa/SimpleGestureRecognizers надеются, что это поможет –

1

Альтернативные способы для вас

Если значок представляет собой кнопку, то вы можете легко обнаружить вкладку Дважды, добавив UIControlEventTouchDownRepeat событие

[yourIconButton addTarget:self action:@selector(multipleTap:withEvent:) 
      forControlEvents:UIControlEventTouchDownRepeat]; 



-(IBAction)multipleTap:(id)sender withEvent:(UIEvent*)event 
{ 
    UITouch* touch = [[event allTouches] anyObject]; 
    if (touch.tapCount == 2) { 
    // Do all your actions here 
    } 
} 

Если вы рассматриваете его для целого вида, используйте UITapGesture

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)]; 
[tap setNumberOfTapsRequired:2]; 
[yourIconView addGestureRecognizer:tap]; 


- (void)tapAction:(UIGestureRecognizer *)gestureRecognizer 
{ 
    //Do your action 
} 
Смежные вопросы