zoukankan      html  css  js  c++  java
  • openURL in APP Extension

    var responder = self as UIResponder?
    
    while (responder != nil){
        if responder!.respondsToSelector(Selector("openURL:")) == true{
            responder!.callSelector(Selector("openURL:"), object: url, delay: 0)
        }
        responder = responder!.nextResponder()
    }


    This will find a suitable responder to send the openURL to.

    You need to add this extension that replaces the performSelector for swift and helps in the construction of the mechanism:

    extension NSObject {
        func callSelector(selector: Selector, object: AnyObject?, delay: NSTimeInterval) {
            let delay = delay * Double(NSEC_PER_SEC)
            let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
    
            dispatch_after(time, dispatch_get_main_queue(), {
                NSThread.detachNewThreadSelector(selector, toTarget:self, withObject: object)
            })
        }
    }




    && Try it in OC
    UIResponder *responder = self;
    while(responder){
        if ([responder respondsToSelector: @selector(OpenURL:)]){
            [responder performSelector: @selector(OpenURL:) withObject: [NSURL URLWithString:@"www.google.com" ]];
        }
        responder = [responder nextResponder];
    }

    or

     UIResponder* responder = self;
        while ((responder = [responder nextResponder]) != nil)
        {
            NSLog(@"responder = %@", responder);
            if([responder respondsToSelector:@selector(openURL:)] == YES)
            {
                [responder performSelector:@selector(openURL:) withObject:[NSURL URLWithString:urlString]];
            }
        }

    转载请注明出处。
  • 相关阅读:
    第一节 2字符串 简单
    第一节 1C#基础 简单
    终于找到wamp修改密码方式了!
    js通过class name获得元素
    JavaScript中arguments
    对技术的态度
    C++的坑真的多吗?
    js 常用正则
    js利用Array.splice实现Array的insert/remove
    c# asp.net webform web页面打印,可以控制需要打印和不需要打印的位置
  • 原文地址:https://www.cnblogs.com/Jenaral/p/5408366.html
Copyright © 2011-2022 走看看