2012-05-28 37 views
0

我刚刚开始了解UITextViews的一个很棒的ios功能,例如UITextview dataDetectorTypes。将文本显示为链接是非常有用的。UITextview dataDetectorTypeAddress - 在不同的应用程序中打开的地图

但是,我注意到了一件事。当字符串是一个物理地址时,Google Map会被打开,这是适当的,但是在不同的应用程序中。

有没有什么办法可以在我们的应用程序中打开google地图,而不进入打开地图的默认iOS应用程序?这样我就可以从地图上回到我的应用程序中。有没有可以控制这个的委托方法?现在我必须最小化应用程序(使其在后台运行),并再次打开它看起来不好。

+0

在uiwebview中打开该地图 –

+0

如何做到这一点?你能指导我吗?地址类型位于上面链接的最后。 – Nitish

+0

对不起,我以前不明白你的问题。我不确定是否可以完成。 –

回答

0

您应该为您的问题使用其他解决方案。

如果使用dataDetectorTypes,则首先在内置应用程序中打开链接。

你可以用按钮和自定义字符串你的动作如下:

  • 把你的文字成的UIButton。

  • 使显示为NSAtributedSring链接,因为这问题你的文字,使用的UIButton代替的UITextView:

Underline text inside uitextview

  • 制定行动为您的按钮就可以了,当用户点击。

祝你好运!

2

很容易,你需要继承UIApplication,覆盖它是openURL:,并通过应用程序类的名称为目标的main.mint main(...)这样的:

int main(int argc, char *argv[]) 
{ 
    @autoreleasepool { 
     return UIApplicationMain(argc, argv, @"MyApplication", NSStringFromClass([MyAppDelegate class])); 
    } 
} 

拦截的URL可以返回NOmaps:方案不启动Maps应用程序并以您希望的任何方式处理地址。


  1. 在该项目中创建一个新类的子类UIApplication
  2. 添加下面的方法来修改:

    - (BOOL)的OpenURL:(NSURL *)网址 { 的NSLog( @“Open%@”,[url absoluteString]);

    // do something if the url scheme is maps: 
    return NO; 
    

    }

  3. 在目标的main.m文件更改默认int main(int argc, char *argv[])实现,使其使用你的UIApplication类,它应该是这样的:

    #进口<的UIKit/UIKit.h > //删除前导空间以编译

    #import“LXAppDelegate.h”

    #进口 “LXapp.h”

    INT主(INT ARGC,CHAR *的argv []){

    @autoreleasepool { 
        return UIApplicationMain(argc, argv, NSStringFromClass([MyUIApplication class]), NSStringFromClass([MyAppDelegate class])); 
    } 
    

    }

这不是ARC(我从不使用它),请参阅UIApplicationMain文档以了解ARC支持会发生什么以及可能会发生什么变化。

+1

根本不懂。 – Nitish

+0

查看更新,我无法更好地解释它。 –

+0

这是一个有点混乱的拳头,但最终是有道理的。可能还有许多其他有用的东西可以用分类的UIApplicaiton来完成。 –

相关问题