iphone:在UIWebView中弹出按钮

时间:2011-12-26 05:11:02

标签: iphone objective-c xcode uiwebview

我想在UIWebView中添加像电子邮件一样的弹出按钮。在我的应用程序中,我创建了电子书

现在,只要我点击(长按)索引页链接,它就会在webView中创建弹出窗口

窗口打开和复制按钮如下所示:               enter image description here

像这样我想放置另一个按钮,如电子邮件和打印。如何在WebView的弹出窗口中创建另一个按钮?提前感谢!

2 个答案:

答案 0 :(得分:5)

您引用的弹出窗口称为UIMenuController。您可以访问[UIMenuController sharedMenuController]方法来获取菜单控制器。然后,您可以将自己的UIMenuItems添加到菜单控制器。

UIMenuItem* myBtn1 = [[[UIMenuItem alloc] initWithTitle: @"Button 1" action:@selector( onButton1: )] autorelease];
UIMenuItem* myBtn2 = [[[UIMenuItem alloc] initWithTitle: @"Button 2" action:@selector( onButton2: )] autorelease];
UIMenuController* mc = [UIMenuController sharedMenuController];
mc.menuItems = [NSArray arrayWithObjects: myBtn1, myBtn2, nil];

现在实现方法

- (void) onButton1: (UIMenuController*) sender
{
}

- (void) onButton2: (UIMenuController*) sender
{
}

有关详细信息,请参阅apple's Doc.

修改

你可以实施Long Gesture

UILongPressGestureRecognizer* gr = [[[UILongPressGestureRecognizer alloc] initWithTarget: self action: @selector( onShowMenu: ) ] autorelease];
   [_myview addGestureRecognizer: gr];



- (void) onShowMenu: (UIGestureRecognizer*) sender
{
    [sender.view becomeFirstResponder];

    UIMenuController* mc = [UIMenuController sharedMenuController];

    CGRect bounds = sender.view.bounds;

    [mc setTargetRect: sender.view.frame inView: sender.view.superview];
    [mc setMenuVisible: YES animated: YES];
}

答案 1 :(得分:1)

您可以创建一个视图控制器,并在视图控制器的.xib文件中添加按钮。

然后你可以在UIPopover中调用那个viewcontroller并在其中加载那个视图控制器。

现在,您只想在索引页面中显示此弹出窗口,为此您必须跟踪页面形式为1-3的页面是索引页面,因此应该在该页面上看到popOver。 当你点击索引链接时,你可以使用webView委托函数,即

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

在此功能下,您可以应用逻辑并启动将会看到的弹出窗口