2011-06-14 2 views
3

내 요청 (loadRequest)에 이미 채워져있는 UIWebView가 있습니다.UIWebView에 UIButton 추가

UIButton을 추가하고 싶습니다. 이 간단한 코드를 작성하는 것은 쉽습니다.

[self.myWebView loadRequest:request]; 
[self.myWebView addSubview:myButton]; 

그러나 UIButton은 UIWebView의 내용으로 스크롤하지 않는 것 같습니다. UIWebView 위에 레이어처럼 고정되어 있습니다. 따라서 사용자가 스크롤하면 UIButton은 내용과 동기화되지 않습니다.

아이디어가 있으십니까?

+1

인터페이스 빌더의 웹 vew에 단추를 추가하거나 웹보기의 프레임 크기를 줄이고보기에 단추를 추가 할 수 있습니다. – Sandeep

답변

9

= 'yourTag01'> < 버튼 > 내 버튼 </버튼 > </stringByEvaluatingJavaScriptFromString 방법을 사용하여있는 UIWebView의 내용으로 > .

사용이 대리자를 클릭 이벤트를 캡처하고 웹보기의 내용을 다시로드 것을 방지하려면, 직접 당신이 정말로 당신을 추가 할 위치입니다있는 UIWebView의 스크롤 뷰에 액세스 할 수 있습니다에서 iOS 5에

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    if(navigationType==UIWebViewNavigationTypeLinkClicked && [[request.URL absoluteString] isEqualToString: @"yourTag01"]) 
    { 
     //your custom action code goes here 
     return NO; 
    } 
    return YES; 
} 
+1

흥미로운 해결책으로 보입니다. 나는 이것을 내일 시도하고 고마워;) –

+0

그것은 일했다, 고마워 :) 내 문제는이 방법을하는 UIWebView (JS 프레임을 사용하여)를 다시로드했다. –

+0

+1 아주 좋은 답변 .... – Saawan

5

제발 쉬운 일이 아닙니다. 자신이하는 일을 재평가하고 싶을 수도 있습니다. 당신은 HTML 마크 업 등 < A HREF를 삽입 할 수

0

axiixc의 의견을 계속 이어 가며, 여기에 웹보기 하단에 버튼을 배치하는 데 사용할 수있는 코드가 있습니다. 레이아웃 서브 뷰에 위치 지정 코드를두면 회전을 올바르게 처리 할 수 ​​있습니다.

- (void)webViewDidFinishLoad:(UIWebView *)webview{ 
    if (!_button){ 
     UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem]; 
     [button setTitle:@"Move All Blue Cards to Known" forState:UIControlStateNormal]; 
     [button setBackgroundImage:[UIImage imageNamed:@"signin-button-blue-color"] forState:UIControlStateNormal]; 
     [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
     button.titleLabel.font = [UIFont boldSystemFontOfSize:16.0]; 
     [_webview.scrollView addSubview:button]; 
     _button = button; 
    } 

    [self setNeedsLayout]; 
    [self layoutIfNeeded]; 

} 


- (void)layoutSubviews{ 
    [super layoutSubviews]; 

    float y = 0; 
    CGRect originalRect = _webview.frame; 
    _webview.frame = CGRectMake(0, 0, originalRect.size.width, 1); // Trick the webview into giving the right size for content 
    CGSize contentSize = _webview.scrollView.contentSize; 
    _webview.frame = originalRect; 
    if (contentSize.height < _webview.frame.size.height){ // This keeps the button at the bottom of the webview, or at the bottom of the content, as needed. 
     y = _webview.frame.size.height - 64; // 44 tall + 20 offset from the bottom 
    } else { 
     y = contentSize.height + 20; 
    } 

    _button.frame = CGRectMake(20, y, self.frame.size.width-40, 44); // 40/2 = 20 px on each side 
    contentSize.height = CGRectGetMaxY(_button.frame)+20; 
    _webview.scrollView.contentSize = contentSize;  
}