Edycja: Zaktualizowany aby kwestia bardziej oczywisteUITapGestureRecognizer programowo wywołać kranu moim zdaniem
Edit 2: Wykonane pytanie bardziej dokładne, aby mój problem w świecie rzeczywistym. Właściwie zamierzam podjąć działania, jeśli dotkną w dowolnym miejscu Z WYJĄTKIEM w polu tekstowym na ekranie. W związku z tym nie mogę po prostu posłuchać wydarzeń w polu tekstowym, muszę wiedzieć, czy kliknęli w dowolnym miejscu w widoku.
Piszę testy jednostkowe, aby potwierdzić, że wykonano pewną czynność, gdy rozpoznawacz gestów rozpoznaje dotknięcie w pewnych współrzędnych mojego widoku. Chcę wiedzieć, czy mogę programowo utworzyć dotyk (przy określonych współrzędnych), który będzie obsługiwany przez UITapGestureRecognizer. Próbuję zasymulować interakcję użytkownika podczas testu jednostki.
UITapGestureRecognizer jest skonfigurowany w konstruktorze Interface
//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 ]]
}
co to za pytanie? – tiguero
zaktualizowane pytanie –
będzie nagrywać na określony widok lub przycisk będzie wystarczający? – tiguero