title: Setting UITapGestureRecognizer for custom UIView inside loop
body: <p>I have a view controller which contains nested <code>UIView</code>. I would like to add a tap listener for each subview I'm adding. But I caught a <code>SIGABRT</code> error when I tap the subview. </p>
  
  <p>Here is my code:</p>
  
  <pre><code>- (void) viewDidLoad {
      [super viewDidLoad];
  
      //set container
      UIView *container = [[UIView alloc] initWithFrame:CGRectMake(5, 5, 320, 420)];
      container.backgroundColor = [UIColor blueColor];
  
      //create new subview within container. I call it "card"
      for (int i=0; i&lt;5; i++)
      {
          //create card
          UIView *card = [[UIView alloc] initWithFrame:CGRectMake(10, 35 + (65 * i), 300, 45)];
          card.backgroundColor = [UIColor greenColor];
  
          //set tap event with action selector = cardRowTapped
          UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(cardRowTapped)];
          [card addGestureRecognizer:tap];
  
          //add subview
          [container addSubview:card];
      }
  
      //add subview to self
      [self.view addSubview:container];
  
  }
  </code></pre>
  
  <p>and here is my tap handler code</p>
  
  <pre><code>- (void) cardRowTapped:(UITapGestureRecognizer *)gr {
      NSLog( @"hello");
  }
  </code></pre>
  
  <p>Console output:</p>
  
  <blockquote>
    <p>2012-10-03 13:23:37.173 MyProject[5167:707] -[MyViewController
    cardRowTapped]: unrecognized selector sent to instance 0x2cd810</p>
    
    <p>2012-10-03 13:23:37.179 MyProject[5167:707] <em>*</em> Terminating app due to
    uncaught exception 'NSInvalidArgumentException', reason:
    '-[MyViewController cardRowTapped]: unrecognized selector sent to
    instance 0x2cd810'</p>
    
    <p><em>*</em> First throw call stack: (0x314b888f 0x377f6259 0x314bba9b 0x314ba915 0x31415650 0x30c45637 0x30bd5d65 0x30e06479 0x30b51f55
    0x30b50aa3 0x30b5d7e9 0x30b5d627 0x30b5d1f5 0x30b43695 0x30b42f3b
    0x3348922b 0x3148c523 0x3148c4c5 0x3148b313 0x3140e4a5 0x3140e36d
    0x33488439 0x30b71cd5 0x76e8d 0x76e28) terminate called throwing an
    exception(lldb)</p>
  </blockquote>
  
  <p>Any idea why this is happening?</p>