2010-01-04 3 views
2

UIWebView에 링크가있는 일부 HTML이 표시됩니다. 사용자가 링크를 실제로 열어야한다는 것을 확인한 후 Safari에서 링크를 열려고합니다.webView : shouldStartLoadWithRequest : navigationType : false를 반환 할 때 강조 표시된 링크 선택을 취소하십시오.

링크를 열면 정상적으로 작동하지만 사용자가 취소하면 링크가 선택된 상태로 유지되고 파란색으로 강조 표시됩니다. 링크를 선택 취소하고 강조 표시를 제거하려면 어떻게합니까?

- (BOOL)webView:(UIWebView *)aWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 
if (navigationType == UIWebViewNavigationTypeLinkClicked) { 
    self.url = request.URL; 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Open the Link in Safari" message:[request.URL absoluteString] delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK"]; 
    [alert show]; 
    [alert release]; 
     return false; 
    } 
    return true; 
} 

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { 
if (buttonIndex == 1) { 
     [[UIApplication sharedApplication] openURL:url]; 
} 
// Insert magic deselection code here 
} 

업데이트 : 그것은 [UIWebView에서 stringByEvaluatingJavaScriptFromString :] 보이는 길을 가야하는 것입니다. 하지만 정확히 어떻게? 시도 :

for (var e in document.getElementsByTag("a")) {e.blur();} 

그러나 아무 소용이 없습니다.

답변

2

나는 이것이 WebKit 코드의 증상이며 MobileSafari가 "마우스"위치를 에뮬레이트하는 방식이라고 생각합니다.

당신처럼 뭔가 그 요소의 CSS 설정을 시도 할 수

:

내 생각이 옳다면 사파리 마우스 커서가 이상 지금 생각하기 때문에
a.YourElementClassName:hover { text-decoration: none; } 

, 그것은 파란색 돌고 밑줄지고있는 이유는 요소. CSS 선택기의 올바른 조합을 사용하면 문제를 해결할 수 있습니다. (추가해야 할 수도 있습니다 : 방문한 방문자와 방문한 방문자 : 확인을 위해 마우스를 가져야합니다.)

1

상태를 선택 해제로 설정하려면 document.getElementById ('yourlinksid')와 같은 것으로 UIWebView stringByEvaluatingJavaScriptFromString을 사용해야합니다.

파일이 너무 크지 않은 경우 js를 사용하여 모든 요소 (xpath 또는 css 선택기 가져 오기 기능 사용)를 선택한 다음 특정 요소를 찾으려고 시도하지 않고 선택 취소로 설정할 수 있습니다. 내 머리 꼭대기에서 JS 레시피가 없지만 UIWebView JS 인터페이스는 어떻게해야 할 것인가.

관련 문제