
- (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];
然后你实现这些方法.
至于define,它的方式会更复杂.首先,你需要通过重写-canPerformAction来检查UIReferencelibraryController是否有定义:withSender:
- (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上的一个类别:
- (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上的另一个自定义类别.
- (CGRect)rectForSelectedText { return CGRectFromString([self stringByEvaluatingJavaScriptFromString:@"getRectForSelecteDWord()"]);} 它的作用是调用一个返回你可以使用CGRectFromString()转换的字符串的JavaScript,它看起来像这样:
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以了解如何将JavaScript注入UIWebVIEw.
总结以上是内存溢出为你收集整理的iphone – 拦截复制,粘贴,在UIWebView中定义d出窗口全部内容,希望文章能够帮你解决iphone – 拦截复制,粘贴,在UIWebView中定义d出窗口所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)