gpt4 book ai didi

ios - 自定义 URL 处理 iOS xamarin

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:06:30 25 4
gpt4 key购买 nike

我正在尝试设置我的应用程序,以便我可以将 NSUrl 属性添加到 textview 的指定子字符串,并且当该 NSUrl 被触摸时,它会推送一个新 View 而不是打开一个新 url。

我正在我的 AppDelegate.cs 类中覆盖 OpenURL,并发送带有 url 的通知

public override bool OpenUrl (UIApplication application, NSUrl url, string sourceApplication, NSObject annotation)
{
NSNotificationCenter.DefaultCenter.PostNotification (NSNotification.FromName ("ArtistDetail", url));

return true;
}

然后在包含 TextView 的类中,我在构造函数中添加观察者

NSNotificationCenter.DefaultCenter.AddObserver ("ArtistDetail", delegate{artistDetail(null);});

还有我的方法

    public void artistDetail (NSNotification notification)
{
//push view based on info in notification.object
}

我运气不好。我找到了这篇文章 Can't push view controller after overriding openURL有人以同样的方式在 objective-c 中做到了。一个问题 - 我在我的 OpenURL 覆盖中放置了断点和日志注释,但它们没有被击中。当您单击/点击 NSSUrl 时,它会默认调用 OpenUrl 吗?如果是这样,为什么我的覆盖没有被击中?

最佳答案

我已经研究了 6 个小时如何做到这一点。当然,在我将问题发布到 SO 上 20 分钟后,我就找到了答案。

我必须实现一个 UIApplication 子类,重写那里的方法,注册它,然后在我的 Main.cs 中将它作为 UIApplication 启动。

UIApplicationMain.cs

[Register ("UIApplicationMain")]
public class UIApplicationMain : UIApplication
{
public UIApplicationMain ()
{
}

public override bool OpenUrl (NSUrl url)
{
NSNotificationCenter.DefaultCenter.PostNotification (NSNotification.FromName ("ArtistDetail", url));

return true;

}
}

主.cs

public class Application
{
// This is the main entry point of the application.
static void Main (string[] args)
{
// if you want to use a different Application Delegate class from "AppDelegate"
// you can specify it here.
UIApplication.Main (args, "UIApplicationMain", "AppDelegate");
}

}

显示超链接的 View Controller ,应该动态处理以推送您想要的 View Controller

public override void ViewDidLoad ()
{
base.ViewDidLoad ();

NSNotificationCenter.DefaultCenter.AddObserver ("ArtistDetail", artistDetail);
}
public void artistDetail (NSNotification notification)
{
NSUrl artistName = (NSUrl)notification.Object;

String name = artistName.AbsoluteString;
this.NavigationController.PushViewController (new ArtistDetailViewController (name), true);
}

对于任何试图解决“如何在 UITextView 中放置一个按钮”问题的人(就像 Twitter 对#hastags 和@users 所做的那样)-就是这样!将文本放入 NSAttributedString 中,将链接属性应用于要充当按钮的文本,并进行相应处理。

关于ios - 自定义 URL 处理 iOS xamarin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21804984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com