В документе Apple, говорит, что процесс для обработки жест являетсяПочему UITableView получит жест панорамы?
Первоначальные попытки просмотреть обрабатывать событие или сообщение. Если он не может обработать событие, он передает событие в свой супервизор, потому что исходное представление не является самым большим видом в иерархии представлений контроллера представления.
Наблюдение пытается обработать событие. Если супервизор не может обработать событие, он передает событие в его супервизор, потому что он по-прежнему не самый верхний вид в иерархии представлений.
Самый верхний вид в иерархии представлений диспетчера представлений пытается обработать событие. Если верхний вид не может обрабатывать событие, он передает событие в свой контроллер представления.
Контроллер представления пытается обработать событие, и если он не может, передает событие в окно.
Если объект окна не может обработать событие, он передает событие в объект приложения singleton.
Если объект приложения не может обрабатывать событие, он отбрасывает событие.
Однако, в моем случае, у меня есть подкласс UITableViewController в качестве корневой В окна и добавить представление, чтобы покрыть весь экран следующим образом:
@interface MyTableViewController : UITableViewController()
@end
@implementation MyTableViewController
- (void)viewDidLoad
{
[super viewDidLoad];
UIView *redView = [[UIView alloc] initWithFrame:self.view.bounds];
redView.backgroundColor = [UIColor redColor];
[self.view addSubview:redView];
}
I подумайте, что redView будет хитом-тестом, если я коснусь экрана, чтобы создать жест панорамы, и потому что redView не справится с этим, он передаст событие касания в его супервизор, что также является супервидом tableView. В результате, tableview не будет обрабатывать жест жеста. Тем не менее, tableView все еще может обрабатывать жест панорамы, может ли кто-нибудь объяснить это?