• iphone打开文本视图中的超连接显示在网页视图中。opening links in a UITextView in a web view


    当设定了文本内容的链接高亮事件监听后,UIApplication将对点击事件做出responser,比如调用safari处理http文本,如果要改变这种响应方法。怎么做?

    Method1、

    使用类别override UITextView的webView:decidePolicyForNavigationAction:request:frame:decisionListener:方法。

    @interface UITextView (CommonOverrid)
    @end

    @class WebView, WebFrame;
    @protocol WebPolicyDecisionListener;

    @implementation UITextView (CommonOverrid)

    - (void)webView:(WebView *)webView decidePolicyForNavigationAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request frame:(WebFrame *)frame decisionListener:(id < WebPolicyDecisionListener >)listener
    {
    NSLog(
    @"request: %@", request);
    UIWebView
    *v1 = [[UIWebView alloc] initWithFrame:CGRectMake(0, self.superview.frame.size.height - 200, 764, 200)];
    [v1 loadRequest:request];
    [((UIView
    *)(self.superview)) addSubview:v1];
    }

    UITextView增加了类别,重写了方法。但必须注意这是一个private API。如果内部框架调整可能导致实效。

    Method2、

    重写UIApplication openURL方法

    @implementation UIApplication (Private)

    - (BOOL)openURL:(NSURL*)url
    {
    //current delegate
    MyAppDelegate *watcher = [[UIApplication sharedApplication] delegate];
    //current controller,use it to handleURL the action
    if (watcher.currentViewController) {
    //do something here....
    [watcher.currentViewController handleURL:url];
    return YES;
    }
    return NO;
    }

    @end

    还有个实现不通过重写方法,而是先命名别称然后交换方法实现。swap implementations between separate methods.

    Method customOpenUrl = class_getInstanceMethod([UIApplication class], @selector(customOpenURL:));
    Method openUrl
    = class_getInstanceMethod([UIApplication class], @selector(openURL:));
    method_exchangeImplementations(customOpenUrl, openUrl);

    所以总结下来还是推荐使用第二种方法。

    详见地址:https://github.com/marksands/UITextViewLinkOptions

  • 相关阅读:
    网页安装ipa
    windows开通https服务
    Asp.Net上传大文件带进度条swfupload
    Asp.Net采集网页方法大全(5种)
    asp.net上传大文件-请求筛选模块被配置为拒绝超过请求内容长度的请求
    在IIS服务器上屏蔽IP的访问
    网络广告CPS/CPC/CPV/CPM/CPA分别是什么意思
    Asp.Net判断字符是否为汉字的方法大全
    Asp.Net使用代理IP远程获取数据
    Asp.Net保存session的三种方法
  • 原文地址:https://www.cnblogs.com/zaric/p/2002234.html
Copyright © 2020-2023  润新知