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;}
...

此静态函数允许您访问全局导航器。这将允许您的代表开火。在你运行 makefile 并上传新的 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 回答