일반적으로 UIWebView에서 텍스트를 강조 표시하면 복사, 붙여 넣기, 정의 .. 등이 나타납니다. 나는 이것을 가로 챌 수있어서 복사본을 선택할 때 다른 메소드를 호출하거나 다른 것을한다. 이것이 가능한가?intercept copy, paste, popover in UIWebView
4
A
답변
6
당신은 단순히 -copy 재정의 할 수
- (void)copy:(id)sender
{
// Do something else here
return [super copy:sender];
}
편집을 귀하의 코멘트에 대답 할 수 있습니다.
정의는 개인이므로 조금 까다 롭습니다. 그러나, 당신은 당신 자신의 방법을 구현할 수 있습니다. 원하는 항목으로 UIMenuController를 설정하십시오.
UIMenuItem *copyItem = [[UIMenuItem alloc] initWithTitle:@"Copy"
action:@selector(myCopy:)];
UIMenuItem *defineItem = [[UIMenuItem alloc] initWithTitle:@"Define"
action:@selector(myDefine:)];
[[UIMenuController sharedMenuController] setMenuItems:[NSArray arrayWithObjects:defineItem, copyItem, nil]];
[defineItem release];
[copyItem release];
그런 다음 해당 메소드를 구현합니다.
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
if (action == @selector(myDefine:)) {
// Make sure we are on iOS5.x
if (NSClassFromString(@"UIReferenceLibraryViewController")) {
return [UIReferenceLibraryViewController dictionaryHasDefinitionForTerm:[webView selectedText]];
}
}
// Implement other custom actions here
return NO;
}
-selectedText 여기있는 UIWebView에 범주입니다 : withSender :
은에 관해서는 먼저, UIReferenceLibraryController이 정의가있는 경우 -canPerformAction를 재정 의하여, 확인해야합니다 ..이 방법이 더 복잡 정의 :- (NSString *)selectedText {
return [self stringByEvaluatingJavaScriptFromString:@"window.getSelection().toString()"];
}
은 그럼 당신은 구현해야 myDefine :
- (void)myDefine:(UIMenuController *)menuController
{
CGRect selectedWordFrame = [webView rectForSelectedText];
UIReferenceLibraryViewController *dict = [[UIReferenceLibraryViewController alloc] initWithTerm:[webView selectedText]];
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:dict];
[popover presentPopoverFromRect:selectedWordFrame
inView:webView
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
[popover setDelegate:self];
[dict release];
}
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
{
[popoverController release];
}
편집자 코멘트에 다시 답하십시오.
-rectForSelectedText는 UIWebView의 또 다른 사용자 지정 범주입니다.
function getRectForSelectedWord() {
var selection = window.getSelection();
var range = selection.getRangeAt(0);
var rect = range.getBoundingClientRect();
return "{{" + rect.left + "," + rect.top + "}, {" + rect.width + "," + rect.height + "}}";
}
확인 this page있는 UIWebView에 자바 스크립트를 삽입하는 방법을 배울 수 : 당신이 CGRectFromString()를 사용하여 변환 할 수있는 문자열을 반환 자바 스크립트를 호출 무엇
- (CGRect)rectForSelectedText {
return CGRectFromString([self stringByEvaluatingJavaScriptFromString:@"getRectForSelectedWord()"]);
}
, 그것은 다음과 같이 보입니다 .
관련 문제
- 1. 위치 표시 줄 URL (jquery)의 copy copy + paste 이벤트
- 2. iOS의 Cut | Copy | Paste 메뉴 현지화
- 3. % paste %
- 4. UIWebView in UIPopover - 보고서 크기
- 5. main = paste (대체 (...), substitute (...)) in R_hist_title
- 6. 새로 고침 popover 뷰에서 모달로 표시되는 UIWebView
- 7. Performant File Copy in C#?
- 8. Object Shallow Copy in C#
- 9. UIStepper in UIWebView - iOS
- 10. Uiwebview in uiscrollview tips
- 11. Content Font in UIWebView
- 12. copy in connectionDidFinishLoading의 메모리 관리 문제
- 13. copy char * in 공유 메모리 부스트
- 14. Ninject Intercept
- 15. HTTPS intercept
- 16. jquery intercept
- 17. Drop/Intercept Call
- 18. popover rotation
- 19. Paste unix에서 명령을 실행합니다.
- 20. HTML5 video in UIWebview 방향 프리
- 21. 복사하여 붙여 넣기 : Apple은 Copy & Paste 버튼/동작을 구현하는 표준화 된 방법을 사용하도록 강요합니까?
- 22. iOS 웹보기가있는 PopOver
- 23. Intercept Calls to DirectX
- 24. UITextView intercept mailto links
- 25. Intercept CDialog 만들기
- 26. Silverstripe function intercept
- 27. UIPopoverController의 UIWebView
- 28. copy/a와 copy/b의 차이점
- 29. Popover 컨트롤러 대 SplitViewController의 메뉴 popover
- 30. copy-in-copy-out 매개 변수 (값 결과 매개 변수 전달)
샘플 : http://goo.gl/lLJpL – elp