2013-11-27 3 views
8

Я напечатал жест UITableViewCell в - Tableview: метод didSelectRowAtIndexPath в NSLog вПолучение Действие UIGestureRecognizer в прошивкой

<UIScrollViewPanGestureRecognizer: 0x11e92080; state = Possible; cancelsTouchesInView = NO; delaysTouchesEnded = NO; view = <UITableViewCellScrollView 0x11e94bf0>; target= <(action=handlePan:, target=<UITableViewCellScrollView 0x11e94bf0>)>> 

и я поручил это UIScrollViewPanGestureRecognizer к UIGestureRecognizer, чтобы получить доступ к его свойства следующим образом,

UIGestureRecognizer *myGes=[temp.gestureRecognizers objectAtIndex:1]; 

Я в состоянии получить доступ ко всем свойства 'myGes', как

myGes.state; 
myGes.cancelsTouchesInView; 
myGes.delaysTouchesEnded; 
myGes.view; 

За исключением одного объекта под названием target.

Есть ли какие-либо возможности для доступа к этому объекту? потому что мне нужно выполнить это действие.

Любые комментарии или предложения будут оценены.

Заранее спасибо.

+0

Я задал тот же вопрос безрезультатно. см. http://stackoverflow.com/questions/20066315/find-uigesturerecognizer-action-selector-name-and-target –

+0

@NicolasManzini ... OOPS ... Значит, нет способа? –

+0

Я до сих пор не знаю ... –

ответ

8

Существует способ получить доступ к собственности target, но я не уверен, что этот метод пройдет процесс утверждения Apple.

NSMutableArray *targets = [myGes valueForKeyPath:@"_targets"]; 
id targetContainer = targets[0];//get first target for example 
id targetOfMyGes = [targetContainer valueForKeyPath:@"_target"]; 
NSLog(@"%@", targetOfMyGes);//you can see reference for target object 

спасибо neilco - его ответ поможет создать решение.

Примечание: точное определение объекта targetOfMyGes необходимо оформить сами. По умолчанию это id - подходит для любого класса объектов.

+0

+1 Спасибо .. @ RuslanSoldatenko..Means это как доступ к частной собственности или частные методы? –

+0

Да, доступ к частной собственности или частные методы возможен с помощью KVC - Key Value Coding. Но я не уверен, что Apple поощряет. –

+0

@Ashok Kumar .S небольшое дополнение: массив 'целей' содержит объекты скрытого класса' UIGestureRecognizerTarget', описание которых можно найти здесь: https://github.com/rpetrich/iphoneheaders/blob/master/UIKit/UIGestureRecognizerTarget.h –

2

UIGestureRecognizer внутренне поддерживает array of targets. Общественного доступа к этому массиву нет.

-1

У меня есть другое решение для этого, которое сработало для меня. Это скорее изменение дизайна ... вы не можете получить доступ к цели из захваченного жеста. Поэтому вместо этого сохраняйте ссылку на объект, когда произошло прикосновение и до начала кастрюли.

@property (nonatomic, strong) UIButton *myTouchedButton; // reference to button 

(void)init 
{ 
    ... 
    [card.button addTarget:self action:@selector(cardTouchDownInside:) forControlEvents:UIControlEventTouchDown]; 
    ... 
} 

-(void)cardTouchDownInside:(id)sender 
{ 
    NSLog(@"touch down on object"); 
    self.myTouchedButton = (UIButton*)sender; 
} 
Смежные вопросы