iOS UIWebView小记

iOS中网页加载使用UIWebView

1.加载页面

- (void)loadRequest:(NSURLRequest *)request;
- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL;
- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName baseURL:(NSURL *)baseURL;

三种方式可选

2.显示加载页面的文字自动换行,并禁止拷贝图片

例如加载页面

NSString *rt = @"<style type='text/css'>  body {word-wrap:break-word; overflow:hidden;font-family:Helvetica;font-size:15;margin:0 12 0 12;line-height:21px;color:#323232;} img {max-width:296px;}</style><meta name='viewport' content='width=device-width; minimum-scale=1.0; maximum-scale=1.0;'/><a href=\"http://www.baidu.com\">More Information</>";

对webview内内容的控制是通过html或css代码等控制的

word-wrap:break-word; overflow:hidden;         // 达到文字自动换行功能
-moz-user-select:none;-webkit-user-select:none; // 禁止图片拷贝,否则拷贝出来是代码

3.常用代理

- (void)webViewDidStartLoad:(UIWebView *)webView {
    self.navigationItem.title = @"载入中...";   // 开始加载
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    self.navigationItem.title = _navigationTitle;    // 完成加载
}

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
    [[HTTPErrorParser sharedInstance] parseErrorCode:error.code];
    self.navigationItem.title = @"载入失败";        // 加载失败,对error的code分析可以知道原因,超时等
}

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    _request = request;        // 纪录你的请求,可用于刷新
    return YES;                // return YES表示哪些请求可以执行,可以达到过滤效果
}

4.定制自己的菜单

可以在viewdidload中创建自己的uimenucontroller

如果使用系统的,可以通过

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

进行选项控制

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

5.选择性的禁止拷贝文本

// 判断长按手势,筛选手势delegate
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    if ([otherGestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]]) {
        if (otherGestureRecognizer.state == UIGestureRecognizerStateBegan && !GCPostIsSelectableAndCopiable(self.post)) {
            GCToastShowDefault(@"作者已禁止复制文本");
        }
        return NO;  // 过滤掉长按手势
    }
    return YES;
}

// 加载后根据内容选择是否禁止该用户拷贝
- (void)webViewDidFinishLoad:(UIWebView *)webView {
    if (!GCPostIsSelectableAndCopiable(self.post)) { // 若满足条件则禁止拷贝,禁止弹菜单等
        [_richTextView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitUserSelect='none';"];
        [_richTextView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitTouchCallout='none';"];
    }
}


你可能感兴趣的:(UIWebView,菜单定制,webview文字换行)