UITapGestureRecognizer déclencher par programmation d'un robinet de mon point de vue

Edit: mis à Jour pour rendre la question plus évident

Edit 2: en Fait la question plus précise à mon problème réel. Je suis actuellement à la recherche de prendre des mesures si elles appuyez n'importe où SAUF dans un texte à l'écran-champ. Donc, je ne peux pas simplement écouter les événements à l'intérieur de la zone de texte, j'ai besoin de savoir si ils taraudés n'importe où dans la Vue.

Je suis en train d'écrire des tests unitaires pour affirmer qu'une certaine action est prise lorsqu'un geste de reconnaissance reconnaît un robinet dans certaines coordonnées de mon point de vue. Je veux savoir si je peux créer par programmation d'une touche (à des coordonnées spécifiques) qui seront traitées par le UITapGestureRecognizer. Je suis d'essayer de simuler l'interaction de l'utilisateur lors d'un test unitaire.

La UITapGestureRecognizer est configuré dans l'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 ]]
}
quelle est la question?
mise à jour de question
va scotcher sur un point de vue spécifique ou un bouton serait suffisant?
Le geste de reconnaissance qui est de reconnaître les robinets sur l'ensemble de la vue, et ensuite déterminer si oui ou non le robinet s'est produite à l'intérieur d'un champ de texte -- cependant, je veux prendre des mesures si elles appuyez sur l'EXTÉRIEUR de ce champ, afin de n'écouter que pour les robinets qui textfield irait à l'encontre du but. Je devrais probablement avoir fait cette distinction dans la question.
Mise à jour une question de faire cette distinction. J'ai d'abord exclus parce que je ne voulais pas avoir un trop long post -- mais vous avez raison, c'est une distinction importante à faire.

OriginalL'auteur Matt H. | 2012-12-30