2014-02-13 50 views
0

我有一个视图控制器与3 UIWebViews,所有帧都覆盖在一起。我使用三个按钮在它们之间切换(类似于段控制)。我想附加一个轻敲手势识别器到web视图,以便点击每个webview导致一个新的控制器。但是,只有第一个webview的UITapGestureRecognizer才会触发。任何人都可以告诉我如何让另外两个手势识别器开火吗?这是我的代码:如何拥有多个UIWebviews,每个都有自己的UITapGestureRecognizer?

- (IBAction)changeWebView:(id)sender 
{ 
    UIButton *button = (UIButton *)sender; 

    switch (button.tag) { 
     case 0: 
     { 
      [self.view bringSubviewToFront:WebView1]; 

      for (UITapGestureRecognizer *recognizer in WebView2.gestureRecognizers) { 
       [WebView2 removeGestureRecognizer:recognizer]; 
      } 

      for (UITapGestureRecognizer *recognizer in WebView3.gestureRecognizers) { 
       [WebView3 removeGestureRecognizer:recognizer]; 
      } 


      UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showFullScreen1)]; 
      tapGestureRecognizer.delegate = self; 
      [WebView1 addGestureRecognizer:tapGestureRecognizer]; 

     } 
      break; 
     case 1: 
     { 
      [self.view bringSubviewToFront:WebView2]; 

      for (UITapGestureRecognizer *recognizer in WebView1.gestureRecognizers) { 
       [WebView1 removeGestureRecognizer:recognizer]; 
      } 

      for (UITapGestureRecognizer *recognizer in WebView3.gestureRecognizers) { 
       [WebView3 removeGestureRecognizer:recognizer]; 
      } 

      UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showFullScreen2)]; 
      tapGestureRecognizer.delegate = self; 
      [WebView2 addGestureRecognizer:tapGestureRecognizer]; 
     } 
      break; 
     case 2: 
     { 
      [self.view bringSubviewToFront:WebView3]; 

      for (UITapGestureRecognizer *recognizer in WebView1.gestureRecognizers) { 
       [WebView1 removeGestureRecognizer:recognizer]; 
      } 

      for (UITapGestureRecognizer *recognizer in WebView2.gestureRecognizers) { 
       [WebView2 removeGestureRecognizer:recognizer]; 
      } 

      UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showFullScreen3)]; 
      tapGestureRecognizer.delegate = self; 
      [WebView3 addGestureRecognizer:tapGestureRecognizer]; 
     } 
      break; 

     default: 
      break; 
    } 
} 

回答

0

这听起来像是一个设计问题。你为什么不只有一个UIView,并根据按下哪个按钮来呈现正确的内容。您可以只有一个手势识别器,根据按钮也可以加载正确的控制器(或执行正确的轮巡)。

+0

感谢您的回复,但我需要一次加载所有三个页面,并且我还希望启用Web视图的缩放功能。所以我不能使用单个视图,甚至不能在webviews上叠加一个透明的UIButton。 – dragonfly

0

将UITapGestureRecognizer添加到视图中,并将全部3个UIWebview作为子视图添加到它们上。只要您检测到要轻触的UITapGestureRecognizer,就可以从segmentedController或按钮中获取标记,然后查找您正在使用的哪一个,并找到哪一个是轻击的。

请勿添加UITapGestureRecognizer并一次又一次删除它。

相关问题