博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

UIWebView 自定义菜单

Posted on 2013-01-08 10:59  xgbzsc  阅读(183)  评论(0编辑  收藏  举报

近期由于项目需要把UIWebView中选中的字分享到微薄,分享按钮以自定义菜单的形式显示。

看似把“分享到新浪微博”和“分享到腾讯微博”加到菜单中这么简单的问题,在实现过程中却遇到不少麻烦。原因是如果把两个菜单项追加到菜单中,显示结果为copy|more,并不是我们所想要的copy|分享到新浪微博|分享到腾讯微博,或者分享到新浪微博|分享到腾讯微博。

网上google到http://braincoder.me/2012/01/custom-edit-menu-on-selection-in-uiwebview/

谈论到了菜单项追加的情况,但是如果追加一项可以,追加两项还会出现以上情况。

 

经过多次试验,发现如果自定义菜单和系统默认菜单同时使用时候,就会有more出现的问题。那么如果全部用自定义的,而不用系统默认的呢?结果符合了我们的需求。

 

附加代码:

[code]

 

#import 

 

@interface MyWebview : UIWebView

 

@end

 

 

//

//  MyWebview.m

//  UICatalog

//

//  Created by fan tingna on 12-3-30.

//  Copyright (c) 2012 apabi. All rights reserved.

//

 

#import "MyWebview.h"

 

@implementation MyWebview

 

 

 

- (IBAction)item0:(id)sender;

{

 

}

 

- (IBAction)item1:(id)sender;

{

 

}

 

- (IBAction)item2:(id)sender;

{

 

}

- (IBAction)item3:(id)sender;

{

 

}

- (IBAction)item4:(id)sender;

{

 

}

- (IBAction)item5:(id)sender;

{

 

}

- (IBAction)item6:(id)sender;

{

 

}

- (IBAction)item7:(id)sender;

{

 

}

 

- (id)initWithFrame:(CGRect)frame {

    

    self = [super initWithFrame:frame];

    if (self) {

        UIMenuController *menuController = [UIMenuController sharedMenuController];

        UIMenuItem *menuItem0 = [[UIMenuItem allocinitWithTitle:NSLocalizedString(@"share",nil)action:@selector(item0:)];

        UIMenuItem *menuItem1 = [[UIMenuItem allocinitWithTitle:NSLocalizedString(@"111",nil)action:@selector(item1:)];

//        UIMenuItem *menuItem2 = [[UIMenuItem alloc] initWithTitle:NSLocalizedString(@"222",nil) action:@selector(item2:)];

//        UIMenuItem *menuItem3 = [[UIMenuItem alloc] initWithTitle:NSLocalizedString(@"333",nil) action:@selector(item3:)];

//        UIMenuItem *menuItem4 = [[UIMenuItem alloc] initWithTitle:NSLocalizedString(@"444",nil) action:@selector(item4:)];

//        UIMenuItem *menuItem5 = [[UIMenuItem alloc] initWithTitle:NSLocalizedString(@"555",nil) action:@selector(item5:)];

        UIMenuItem *menuItem6 = [[UIMenuItem allocinitWithTitle:NSLocalizedString(@"666",nil)action:@selector(item6:)];

        UIMenuItem *menuItem7 = [[UIMenuItem allocinitWithTitle:NSLocalizedString(@"分享到微博",nilaction:@selector(item7:)];

        

        NSArray *array = [NSArray arrayWithObjects:menuItem0, menuItem1, menuItem6, menuItem7,nil];

        [menuController setMenuItems:array];

    }

    return self;

}

 

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {

    if (action == @selector(item0:)||

        action == @selector(item1:)||

        action == @selector(item2:)||

        action == @selector(item3:)||

        action == @selector(item4:)||

        action == @selector(item5:)||

        action == @selector(item6:)||

        action == @selector(item7:)

        )

    {

        return YES;

    }

//    return [super canPerformAction:action withSender:sender];

    return  NO;

}

 

@end

 

 

 

 [/code]