1

TTStyledTextLabel のリンク クリックに応答しようとしています。

インターネットで読んだことから、TTNavigator のデリゲートを作成する必要があるという印象を受けました。

私は AppDelegate.cs にこれを持っています

public override bool FinishedLaunching (UIApplication application, NSDictionary launchOptions)
{
    _navigator = new TTNavigator();
    _navigator.Delegate = new NewsDelegate();
    _navigator.Window = Window;
    var map = _navigator.URLMap;
    map.FromToViewController("*",  (new MainController()).ClassHandle);
    return true;
}

しかし、これはニュースデリゲートにまったく反応していません

    public class NewsDelegate : TTNavigatorDelegate
    {
        public override bool Navigator (TTNavigator navigator, NSUrl URL)
        {
            return false;
        }
    }

そこのブレークポイントはトリガーされていません

4

1 に答える 1

1

わかりました、これはかなり長い間私を夢中にさせました。ラベルのサブクラス化、C# への変換など、何百万ものことを試しました。最終的に解決策を見つけました。

バインディングを編集する必要があります (変更をコミットしましたが、私が書いている時点ではそこにはありません)。

[BaseType (typeof (NSObject))]
interface TTNavigator
{
    [Static, Export("navigator")]
    TTNavigator Navigator {get;set;}
...

この静的関数を使用すると、グローバル ナビゲーターにアクセスできます。これにより、デリゲートが起動できるようになります。メイクファイルを実行し、新しい DLL をアップロードした後 (まだそこにない場合)。

AppDelegate.cs を更新する

    public override bool FinishedLaunching (UIApplication application, NSDictionary launchOptions)
    {
        _navigator= TTNavigator.Navigator;
        _navigator.Delegate = new NewsDelegate();
        return true;
    }

これで、リンクがクリックされるとデリゲートが起動します

于 2012-07-25T21:14:43.997 に答える