在电话后,本机代码与UIWebView有所不同,返回到应用程序行为

问题描述

|| 根据Apple的文档,为了通过我的应用程序拨打电话,我需要实现以下协议: HTML链接
<a href=\"tel:1-408-555-5555\">1-408-555-5555</a>
本机应用程序URL字符串:
tel:1-408-555-5555
但是,在完成从UIWebView内的HTML链接发起的电话通话后,我被直接重定向回了我的应用程序。但是,在完成从本机应用程序URL字符串进行的电话呼叫后,我的iPhone仍停留在iPhone的常规电话应用程序中,如果要返回到我的应用程序,则必须手动执行此操作。 据我从阅读别人的讲话可以看出,没有办法改变这种行为。 这是我的问题: 确实是不可能的 在之后返回到应用程序 从本地人打个电话 应用程序URL字符串? 会有不利的一面吗 实现UIWebView而不是 在我遇到的情况下的UILabel 真的希望用户成为 重定向回我的应用程序 打完电话后?     

解决方法

         在使用“ 3” URL调用“ 2”和单击“ 4”中指向相同URL的链接之间,行为的确有所不同。 使用ѭ4代替UILabel可能会有一些缺点,但是您不必实际显示ѭ4来获得其
tel
URL处理行为。相反,只需在UIWebView实例中加载“ 7” URL请求,而不将其添加到视图层次结构中即可。 例如:
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface PhoneCaller : NSObject
{
  @private
    UIWebView *webview;
}
- (void)callTelURL:(NSURL *)url;
@end

@implementation
- (id)init
{
    self = [super init];
    if (self)
    {
        webview = [[UIWebView alloc] init];
    }
    return self;
}
- (void)callTelURL:(NSURL *)url
{
    [webview loadRequest:[NSURLRequest requestWithURL:url]];
}
- (void)dealloc
{
    [webview release];
    [super dealloc];
}
@end
    ,        最简单的方法似乎是:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@\"telprompt:0123456789\"]];
通话结束后,您会收到提示,并且您的应用将重新获得关注。     ,        请允许我简化一下。您需要的只是这个小片段:
UIWebView *callWebview = [[UIWebView alloc] init];
NSURL *telURL = [NSURL URLWithString:@\"tel:number-to-call\"];
[callWebview loadRequest:[NSURLRequest requestWithURL:telURL]];
我到了这里。 *最近在iOS 5.0上成功测试。     ,        Eric的Brotto方法仍可在5.1中使用。您必须在loadRequest之前将webview添加到主视图,如下所示:
NSString *cleanedString = [[phoneNumber componentsSeparatedByCharactersInSet:[[NSCharacterSet characterSetWithCharactersInString:@\"0123456789-+()\"] invertedSet]] componentsJoinedByString:@\"\"];
NSString *escapedPhoneNumber = [cleanedString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *telURL = [NSURL URLWithString:[NSString stringWithFormat:@\"tel://%@\",escapedPhoneNumber]];
UIWebView *mCallWebview = [[UIWebView alloc] init]  ;
[self.view addSubview:mCallWebview];
[mCallWebview loadRequest:[NSURLRequest requestWithURL:telURL]]; 
(我添加了一个电话号码清理器,以删除任何阻止此方法的非数字字符)