2012-05-28 64 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來完成。 –

相關問題