Как добавить сенсорное событие в UIView? - PullRequest
264 голосов
/ 11 января 2011

Как добавить сенсорное событие в UIView?
Я стараюсь:

UIView *headerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, nextY)] autorelease];
[headerView addTarget:self action:@selector(myEvent:) forControlEvents:UIControlEventTouchDown];
// ERROR MESSAGE: UIView may not respond to '-addTarget:action:forControlEvents:'

Я не хочу создавать подкласс и перезаписывать

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

Ответы [ 13 ]

0 голосов
/ 13 февраля 2017

Создайте распознаватель жестов (подкласс), который будет реализовывать сенсорные события, например touchesBegan.После этого вы можете добавить его в представление.

Таким образом вы будете использовать композицию вместо подклассов (что и было запросом).

0 голосов
/ 17 июня 2016

Другой способ - добавить прозрачную кнопку к представлению

UIButton *b = [UIButton buttonWithType:UIButtonTypeCustom];
b.frame = CGRectMake(0, 0, headerView.width, headerView.height);
[headerView addSubview:b];
[b addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchDown];

А затем обработать щелчок:

- (void)buttonClicked:(id)sender
{}
0 голосов
/ 31 марта 2016

Вот ios tapgesture;Сначала вам нужно создать действие для GestureRecognizer после того, как напишите код ниже под действием, как показано ниже

- (IBAction)tapgesture:(id)sender

{


[_password resignFirstResponder];


[_username resignFirstResponder];

NSLog(@" TapGestureRecognizer  tapped");

}
...