2013-06-16 6 views
1

В принципе, у меня есть UIViewController с xib, созданным для хранения содержимого в UIScrollView. это заселяется из RSS-канала. это работает так, как ожидалось. Я хочу нажать на UIView, что диспетчер представлений владеет, чтобы реагировать на нажатие и продолжать свой путь. однако кратковременное нажатие на приложение вызывает ошибку «непризнанный селектор, отправленный на экземпляр». Я действительно не понимаю, что происходит.приложение сбой при ответе на tapgesture

заголовочных файл контроллера представления в XIb выглядит следующим образом:

@property (nonatomic,retain) IBOutlet UIImageView *article_image; 
@property (nonatomic,retain) IBOutlet UILabel *article_title; 
@property (nonatomic,retain) IBOutlet UILabel *article_date; 
@property (nonatomic,retain) IBOutlet UIActivityIndicatorView *spinner; 

@property (nonatomic,retain) NSString *preview_image; 

- (void) loadPreviewImage; 

Затем файл .m выглядит следующим образом:

- (void)viewDidLoad { 

    [super viewDidLoad]; 

    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGesture)]; 
    singleTap.numberOfTapsRequired = 1; 
    [self.view addGestureRecognizer:singleTap]; 

    self.view.layer.shadowColor = [UIColor blackColor].CGColor; 
    self.view.layer.shadowOpacity = 0.6; 
    self.view.layer.shadowRadius = 1.5; 
    self.view.layer.shadowOffset = CGSizeMake(0, 0); 

} 

- (void) singleTapGesture:(UITapGestureRecognizer *)gesture { 
    NSLog(@"TAPPED!"); 
} 

Даже если я ставлю только простой roundrectbutton в xib и привязать его к IBAction - он сработает, поэтому я полагаю, что что-то не так, как мой xib настроен, но я понятия не имею, что. эти свойства в .h заселяются просто отлично от VC, который содержит scrollview, поэтому xib, очевидно, знает файл, с которым он связан, поэтому я просто не могу понять, почему он терпит крах и бросает эту ошибку при нажатии.

+0

Что делает отчет о сбое? – CW0007007

+0

Также ваши IBOutlets должны быть (неатомные, слабые) – CW0007007

ответ

1

Исправление заключается в следующем:

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGesture:)]; 

Обратите внимание на : в конце селектора.

Действительно, ваш метод действие подписи:

- (void) singleTapGesture:(UITapGestureRecognizer *)gesture; 

в то время как

@selector(singleTapGesture) 

предпочел бы определить:

- (void) singleTapGesture; 

Надеется, что это проясняет вопрос.

+0

спасибо за ответ, sergio. это на самом деле то, с чего я начал с того, что размещенный код был мной, пытающимся вернуться и очистить все, что я пробовал ... и явно оставил это. независимо от того, чтобы попробовать, я вернул его и ... ту же проблему, хотя консоль ничего не сообщает (lldb) о кране и сбое. – tnd

+0

поставить точку останова на исключениях, чтобы увидеть, где именно происходит авария ... или вы уже видите трассировку стека после сбоя в левой части окна Xcode? что там? – sergio

+0

Да, это бросание следа ... dunno, если этот скриншот поможет многое, но вот он: http://i.imgur.com/KgnWVfY.png – tnd

0

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

Смежные вопросы