2013-12-14 4 views
0

다른 탭을 추가 할 때 새 UIWebview를 만드는 웹 브라우저를 구축하고 있습니다. 새 뷰에는 작성시 특정 뷰를 호출 할 수있는 태그가 제공됩니다. 전방에 서브 뷰를 호출하면로드 요청에 응답하지 않습니다. 이것은 서브 뷰를 앞으로 가져 오는 방법입니다.UIWebview의 하위 뷰가로드 요청에 응답하지 않습니다.

-(void) selectionMade:(id)sender 
{ 
    //find view with same tag num as button pushed 
    for (UIView *view in self.webView.subviews) 
    { 
     if (view.tag == [sender tag]) 
     { 
      [self.webView bringSubviewToFront:view]; 
     } 
    } 
} 

다음은 주소를 입력하는 텍스트 필드에 응답하기위한 코드입니다.

- (void)textFieldDidEndEditing:(UITextField *)textField 
{ 

    NSString *text = [textField.text lowercaseString]; 

    if (![text hasPrefix:@"http://"] && ![text hasPrefix:@"https://"]) 
    { 
     text = [NSString stringWithFormat:@"http://%@", text]; 
    } 

    self.title = text; 
    url = [NSURL URLWithString:text]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLCacheStorageAllowedInMemoryOnly timeoutInterval:10.]; 
    [self.webView loadRequest:request]; 

} 
+0

웹보기가 있고 다른 웹보기를 웹보기의 하위보기로 추가 하시겠습니까? 이것은 나쁜 행동입니다. 로드 요청은 하나의 웹보기로 보내지 만, 다른 웹보기가 하위보기로 있으면 해당보기가 실제로로드되는 superview webview를 숨 깁니다. –

+0

탭을 추가 할 때 새로운보기 컨트롤러를 작성해야합니까? – user961632

+0

필요는 없습니다. 그것은 당신이 제공하고자하는 경험에 달려 있습니다. 각 탭에 대한 웹보기를 만들 수도 있지만 계층 구조의 동일한 수준 (동일한 수퍼 뷰)에 있어야하며 앞면으로 이동하면됩니다. 이것이 사파리가하는 일입니다. 옵션으로 답변을 입력하겠습니다. –

답변

1

웹보기의 하위보기로 다른 웹보기를 추가하면 안됩니다. 이것은 잘못된 디자인입니다. 실질적으로 메인 웹 뷰에서 loadRequest:이라고 부르지 만 메인 뷰의 내용을 숨기는 서브 뷰 중 하나를 앞으로 가져옵니다.

제공하려는 경험에 따라 몇 가지 옵션이 있습니다.

  1. (여기에서 수행하려는 것과 비슷한 방식으로) 웹 뷰를 교묘하게 조종 할 수 있습니다. 그러나 이러한 웹보기는 계층 구조에서 같은 수준에 있어야하며 은 필요한 경우에만 앞에 가져야합니다. 그러면보기 컨트롤러 이 여러 웹보기의 대표가되고 모두 서비스해야합니다. 이것이 Safari의 견해를 관리하는 방법입니다.
  2. 페이지보기 컨트롤러를 만들고 각 탭마다 다른보기 컨트롤러를 제공 할 수 있습니다. 이렇게하면 각보기 컨트롤러가 하나의 탭만 서비스하므로 관리가 더 쉬워집니다. 또한 탭을 빠르게 전환하기 위해 왼쪽 또는 오른쪽으로 스 와이프를 제공 할 수도 있습니다.
관련 문제