UIButton в пользовательской проблеме UIView - PullRequest
1 голос
/ 23 февраля 2011

У меня есть простое (основанное на просмотре) приложение.Я хочу, чтобы при нажатии на пользовательский UIView моя кнопка перемещалась где-то внутри этого вида (например, в точку 10,10).

  1. Мой пользовательский UIView - это DrawView (DrawView.h и DrawView.m).
  2. RotatorViewController (h. И .m).

Я добавляю в свой DrawView кнопку UIB, соединяю с выходами мои DrawView и UIButton.Я добавляю UITapGestureRecognizer в RotatorViewController и @selector (нажмите :).Вот код UITapGestureRecognizer

- (void)viewDidLoad
{
    [super viewDidLoad];
    UIGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc] initWithTarget:drawView action:@selector(tap:)];
    [drawView addGestureRecognizer:tapGR];
    [tapGR release];

}

@ selector (tap:)

- (void) tap:(UITapGestureRecognizer *)gesture {
        myButton.transform = CGAffineTransformMakeTranslation(10, 10);
}

Но когда я нажимаю в любом месте в приложении DrawView, происходит сбой.Вот лог с консоли

2011-02-23 20:59:24.897 Rotator[7345:207] -[DrawView tap:]: unrecognized selector sent to instance 0x4d0fa80
2011-02-23 20:59:24.900 Rotator[7345:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[DrawView tap:]: unrecognized selector sent to instance 0x4d0fa80'

Мне нужна ваша помощь

Ответы [ 2 ]

2 голосов
/ 23 февраля 2011

Вы сказали:

UITapGestureRecognizer в RotatorViewController и @selector (водопроводная:)

и вы написали: UIGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc] initWithTarget:drawView action:@selector(tap:)];

Это означает, что действия выполняются в делегате drawView, но вы определили селектор tap: в RotatorViewController.

Я думаю, вы просто должны заменить цель drawView на self

UIGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];

0 голосов
/ 23 февраля 2011

Ошибка указывает, что экземпляры класса DrawView не отвечают на сообщения tap:. Я вижу, что вы определили метод tap: в DrawView.m, но объявили ли вы этот метод в заголовке? Вот так:

DrawView.h

@class UITapGestureRecognizer;
@interface DrawView {
    UIButton *myButton;
}
- (void) tap:(UITapGestureRecognizer *)gesture;
@end
...