0

UITextViews 、つまりUITextview dataDetectorTypesの素晴らしいios機能について知りました。テキストをリンクとして表示するのは本当に便利です。

ただし、ひとつ気になったことがあります。文字列が住所の場合、適切な Google マップが別のアプリケーションで開かれます。

アプリケーションでそのGoogleマップを開き、マップが開かれているデフォルトのiOSアプリケーションに移動しない方法はありますか? マップからアプリケーションに戻ることができるようにします。これを制御できるデリゲートメソッドはありますか? 現在、アプリケーションを最小化して(バックグラウンドで実行する)、もう一度開く必要がありますが、見栄えがよくありません。

4

2 に答える 2

2

非常に簡単です。次のように、をサブクラス化しUIApplication、それをオーバーライドしてopenURL:、アプリケーション クラス名をターゲットに渡す必要がありますmain.m int main(...)

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

アプリを起動せず、希望する方法でアドレスを処理しないスキームNOのために返すことができる URL をインターセプトします。maps:Maps


  1. プロジェクトで、新しいクラスのサブクラスを作成しますUIApplication
  2. オーバーライドする次のメソッドを追加します。

    -(BOOL)openURL:(NSURL *)url { NSLog(@"Open %@", [url absoluteString]);

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

    }

  3. ターゲットのmain.mファイルで、デフォルトのint main(int argc, char *argv[])実装を変更して、UIApplicationクラスを使用するようにします。次のようになります。

    #import < UIKit/UIKit.h> //先頭のスペースを削除してコンパイル

    #import "LXAppDelegate.h"

    #import "LXapp.h"

    int main(int argc, char *argv[]) {

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

    }

それはARC(私は決してそれを使用していません)ためではありません.UIApplicationMainのドキュメントを参照して、ARCサポートのために何が起こり、おそらく何を変更する必要があるかを理解してください。

于 2012-05-28T07:29:09.983 に答える
0

問題には別の解決策を使用する必要があります。

dataDetectorTypes を使用する場合、リンクは常に最初に組み込みアプリで開かれます。

以下のように、ボタンとカスタム文字列を使用してアクションを作成できます。

  • テキストを UIButton にプッシュします。

  • テキストを NSAtributedSring のリンクとしてこの質問として表示するには、UITextView の代わりに UIButton を使用します。

uitextview 内のテキストに下線を引く

  • ユーザーがボタンをクリックしたときにボタンのアクションを実行します。

幸運を!

于 2012-05-28T07:30:50.807 に答える