Изменить: обновлено, чтобы сделать вопрос более очевидным
Изменить 2: Сделал вопрос более точным для моей реальной проблемы. Я на самом деле ищут действия, если они нажимают в любом месте EXCEPT в текстовом поле на экране. Таким образом, я не могу просто прослушивать события в текстовом поле, мне нужно знать, если они будут использоваться в любом месте в представлении.
Я пишу модульные тесты, чтобы утверждать, что определенное действие предпринимается, когда распознаватель жестов распознает касание в определенных координатах моего представления. Я хочу знать, могу ли я программно создать прикосновение (при определенных координатах), которое будет обрабатываться UITapGestureRecognizer. Я пытаюсь имитировать взаимодействие пользователя во время unit test.
UITapGestureRecognizer настроен в Interface Builder
//MYUIViewControllerSubclass.m
-(IBAction)viewTapped:(UITapGestureRecognizer*)gesture {
CGPoint tapPoint = [gesture locationInView:self.view];
if (!CGRectContainsPoint(self.textField, tapPoint)) {
// Do stuff if they tapped anywhere outside the text field
}
}
//MYUIViewControllerSubclassTests.m
//What I'm trying to accomplish in my unit test:
-(void)testThatTappingInNoteworthyAreaTriggersStuff {
// Create fake gesture recognizer and ViewController
MYUIViewControllerSubclass *vc = [[MYUIViewControllersSubclass alloc] init];
UITapGestureRecognizer *tgr = [[UITapGestureRecognizer initWithView: vc.view];
// What I want to do:
[[ Simulate A Tap anywhere outside vc.textField ]]
[[ Assert that "Stuff" occured ]]
}