我刚刚了解到 UITextViews 的一个很棒的 ios 功能,即 UITextview dataDetectorTypes .将文本显示为链接非常有用。
不过,我注意到一件事。当字符串是一个物理地址时,谷歌地图被打开,这是合适的,但在不同的应用程序中。
有什么方法可以在我们的应用程序中打开该谷歌地图,而不是进入打开 map 的默认 iOS 应用程序?这样我就可以从 map 返回我的应用程序。有没有可以控制这个的委托(delegate)方法?现在我必须最小化应用程序(使其在后台运行)并再次打开它看起来不太好。
最佳答案
很简单,你需要继承UIApplication
,覆盖它的 openURL:
并将应用程序类名传递给目标的 main.m
int main(...)
像这样:
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, @"MyApplication", NSStringFromClass([MyAppDelegate class]));
}
}
拦截您可以返回的网址NO
对于 maps:
计划不启动 Maps
应用程序并以您希望的任何方式处理地址。
- 在项目中创建一个新类子类
UIApplication
添加以下要覆盖的方法:
-(BOOL)openURL:(NSURL *)url { NSLog(@"打开 %@", [url absoluteString]);
// do something if the url scheme is maps: return NO;
在目标的
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 支持更改哪些内容。
关于iphone - UITextview dataDetectorTypeAddress - 在不同应用程序中打开的 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10780545/