2014-02-13 2 views
0

나는 3/의 뷰 컨트롤러를 가지고 있는데, 모두 같은 프레임이 서로 겹쳐져 있습니다. 세 개의 버튼을 사용하여 세그먼트를 전환합니다 (세그먼트 컨트롤과 비슷 함). 각 webview를 탭하면 새 컨트롤러로 연결되도록 탭 제스처 인식기를 webview에 연결하고 싶습니다. 그러나 첫 번째 웹보기에 대해 UITapGestureRecognizer 만 실행됩니다. 다른 사람이 제스처 인식기를 발사하는 방법을 말해 줄 수 있습니까? 이것은 내 코드입니다.각각의 UITapGestureRecognizer가있는 여러 UIWebview를 갖는 방법은 무엇입니까?

- (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 만 있고 어떤 버튼을 눌렀는지에 따라 정확한 내용을 렌더링하지 않는 것이 어떻습니까? 그런 다음 버튼에 따라 올바른 컨트롤러를로드하거나 올바른 segue를 수행하는 제스처 인식기를 하나만 사용할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다.하지만 3 개의 페이지를 모두 동시에로드해야하며 webview의 확대/축소 기능을 사용하고 싶습니다. 따라서 단일 뷰를 사용하거나 웹 뷰에서 투명한 UIButton을 오버레이 할 수는 없습니다. – dragonfly

0

뷰에 UITapGestureRecognizer를 추가하고 3 개의 UIWebview를 모두 하위 뷰로 추가하십시오. UITapGestureRecognizer가 탭핑 될 때마다 segmentedController 또는 사용중인 버튼에서 태그를 가져오고 탭 된 태그를 찾으십시오.

UITapGestureRecognizer를 추가하고 반복해서 제거하지 마십시오.

관련 문제