如何在iOS和webviewdidfinishload上禁用超链接和复制/粘贴菜单未调用

如何在iOS和webviewdidfinishload上禁用超链接和复制/粘贴菜单未调用,ios,uiwebviewdelegate,Ios,Uiwebviewdelegate,我正在尝试禁用iOS UIwebview上的超链接和复制/粘贴菜单 所以我在谷歌上搜索,找到了很多答案。 然后我遇到了另一个问题“未调用webviewdidfinishload” 所以我添加了我的代码来请求您的帮助。(我确信我正确连接了IB插座) 另外,我仍然没有想到将mainWebView.delegate=self替换为self.mainWebView.delegate=self 有人能解释一下区别吗? 所以我不确定我的其他功能 [[[mainWebView子视图]lastObject]Se

我正在尝试禁用iOS UIwebview上的超链接和复制/粘贴菜单 所以我在谷歌上搜索,找到了很多答案。 然后我遇到了另一个问题“未调用webviewdidfinishload” 所以我添加了我的代码来请求您的帮助。(我确信我正确连接了IB插座)

另外,我仍然没有想到将mainWebView.delegate=self替换为self.mainWebView.delegate=self 有人能解释一下区别吗? 所以我不确定我的其他功能 [[[mainWebView子视图]lastObject]SetScrolEnabled:是] [[[mainWebView子视图]lastObject]setScrollsToTop:否]
mainWebView.scalesPageToFit=是 这些措施是否有效

它应该在ios5到ios6.1上工作 多谢各位

在.h文件中

@interface HRViewController : UIViewController <UIWebViewDelegate>
{
    UIWebView *mainWebView;
}
@property (strong, nonatomic) IBOutlet UIWebView *mainWebView;

@end
伊迪德 我使用了下面的代码,但仍然不起作用。。。 所有这些都不起作用

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
    NSLog(@"canPerformAction: %@",NSStringFromSelector(action));
    if (action == @selector(copy:) ||
        action == @selector(paste:)||
        action == @selector(cut:)) {
        return NO;
    }
    return NO;
}
还有这个

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
    UIMenuController *menuController = [UIMenuController sharedMenuController];
    if (menuController) {
        [UIMenuController sharedMenuController].menuVisible = NO;
    }
    return NO;
}
甚至这个 -(无效)viewDidLoad{ mainWebView.delegate=self; }

还有这个 -(无效)viewDidLoad{ [self longPress:self.mainWebView]; }


请帮帮我。。这让我疯狂了一个星期。

隐藏复制/粘贴菜单:

覆盖
canperformation:withSender:
方法,为不允许的操作返回
NO

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
    if (action == @selector(paste:))
        return NO;

    if (action == @selector(select:))   
        return NO;

    if (action == @selector(selectAll:))   
        return NO;

    return [super canPerformAction:action withSender:sender];
}
另一种方式:

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
    UIMenuController *menuController = [UIMenuController sharedMenuController];
    if (menuController) {
        [UIMenuController sharedMenuController].menuVisible = NO;
    }
    return NO;
}
也检查

禁用超链接:

你可以从中得到这个问题的答案

关于
UIWebView

如果使用ARC,则只写

@property (strong, nonatomic) IBOutlet UIWebView *mainWebView;
无需对属性进行@合成,其他方面

@interface HRViewController : UIViewController <UIWebViewDelegate>
{
    UIWebView *mainWebView;
}

@property (nonatomic,retain) IBOutlet UIWebView *mainWebView;

@end

// .m file

- (void)viewDidLoad
{
    mainWebView = [[UIWebView alloc] initWithFrame:self.view.bounds];
    mainWebView.scalesPageToFit = YES;
    mainWebView.delegate = self;

    [[[mainWebView subviews] lastObject] setScrollEnabled:YES];
    [[[mainWebView subviews] lastObject] setScrollsToTop:NO];
    mainWebView.scalesPageToFit = YES;

    [self.view addSubview:self.mainWebView];

    NSURL *url = [NSURL URLWithString:@"http://www.mysite.com"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [mainWebView loadRequest:request];
}
@界面HRViewController:UIViewController
{
UIWebView*mainWebView;
}
@属性(非原子,保留)IBUIWebView*mainWebView;
@结束
//.m文件
-(无效)viewDidLoad
{
mainWebView=[[UIWebView alloc]initWithFrame:self.view.bounds];
mainWebView.scalesPageToFit=是;
mainWebView.delegate=self;
[[[mainWebView子视图]lastObject]SetScrolEnabled:是];
[[[mainWebView子视图]lastObject]setScrollsToTop:否];
mainWebView.scalesPageToFit=是;
[self.view addSubview:self.mainWebView];
NSURL*url=[NSURL URLWithString:@”http://www.mysite.com"];
NSURLRequest*request=[nsurlRequestRequestWithURL:url];
[mainWebView加载请求:请求];
}

这可能会对您有所帮助。

要隐藏复制/粘贴菜单:

覆盖
canperformation:withSender:
方法,为不允许的操作返回
NO

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
    if (action == @selector(paste:))
        return NO;

    if (action == @selector(select:))   
        return NO;

    if (action == @selector(selectAll:))   
        return NO;

    return [super canPerformAction:action withSender:sender];
}
另一种方式:

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
    UIMenuController *menuController = [UIMenuController sharedMenuController];
    if (menuController) {
        [UIMenuController sharedMenuController].menuVisible = NO;
    }
    return NO;
}
也检查

禁用超链接:

你可以从中得到这个问题的答案

关于
UIWebView

如果使用ARC,则只写

@property (strong, nonatomic) IBOutlet UIWebView *mainWebView;
无需对属性进行@合成,其他方面

@interface HRViewController : UIViewController <UIWebViewDelegate>
{
    UIWebView *mainWebView;
}

@property (nonatomic,retain) IBOutlet UIWebView *mainWebView;

@end

// .m file

- (void)viewDidLoad
{
    mainWebView = [[UIWebView alloc] initWithFrame:self.view.bounds];
    mainWebView.scalesPageToFit = YES;
    mainWebView.delegate = self;

    [[[mainWebView subviews] lastObject] setScrollEnabled:YES];
    [[[mainWebView subviews] lastObject] setScrollsToTop:NO];
    mainWebView.scalesPageToFit = YES;

    [self.view addSubview:self.mainWebView];

    NSURL *url = [NSURL URLWithString:@"http://www.mysite.com"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [mainWebView loadRequest:request];
}
@界面HRViewController:UIViewController
{
UIWebView*mainWebView;
}
@属性(非原子,保留)IBUIWebView*mainWebView;
@结束
//.m文件
-(无效)viewDidLoad
{
mainWebView=[[UIWebView alloc]initWithFrame:self.view.bounds];
mainWebView.scalesPageToFit=是;
mainWebView.delegate=self;
[[[mainWebView子视图]lastObject]SetScrolEnabled:是];
[[[mainWebView子视图]lastObject]setScrollsToTop:否];
mainWebView.scalesPageToFit=是;
[self.view addSubview:self.mainWebView];
NSURL*url=[NSURL URLWithString:@”http://www.mysite.com"];
NSURLRequest*request=[nsurlRequestRequestWithURL:url];
[mainWebView加载请求:请求];
}

这可能会对您有所帮助。

谢谢您的回答。不幸的是,它对我仍然不起作用。我都试过了,但都没用。我甚至禁用了LongPress手势,但不起作用。将javascript添加到CSS也不起作用。。我不知道这个问题,但它让我发疯。。但一个进展是现在webViewDidFinishLoad被调用(nslog确认)。需要额外的帮助感谢您的回答。不幸的是,它对我仍然不起作用。我都试过了,但都没用。我甚至禁用了LongPress手势,但不起作用。将javascript添加到CSS也不起作用。。我不知道这个问题,但它让我发疯。。但一个进展是现在webViewDidFinishLoad被调用(nslog确认)。需要额外的帮助