近期由于项目需要把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 alloc] initWithTitle:NSLocalizedString(@"share",nil)action:@selector(item0:)];
UIMenuItem *menuItem1 = [[UIMenuItem alloc] initWithTitle: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 alloc] initWithTitle:NSLocalizedString(@"666",nil)action:@selector(item6:)];
UIMenuItem *menuItem7 = [[UIMenuItem alloc] initWithTitle:NSLocalizedString(@"分享到微博",nil) action:@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]