我们的应用程序依赖 UIWebview 在用户发起电话呼叫后返回应用程序。在咨询了一些开发者之后,我们没有对 iOS6 做任何改动,希望应用能够正常运行。
现在,发生了以下情况:
1) UIWebview 仍在工作 - 结束通话时将用户带回应用程序
2) 但是,该应用程序将用户引导到错误的屏幕 - 它正在将其带到用户应该看到的屏幕之后。用户可以记录电话的关键屏幕未显示。
3) 唯一的例外似乎是当用户注销并重新登录时——在这种情况下,他们只能看到正确的屏幕一次,然后下次打电话时他们又会进入错误的屏幕。
我不是编码员,但在浏览完代码后,看起来这是三个(几乎相同)代码片段之一,应该在电话结束时调用结束通话屏幕,但在 iOS6 下不是:
- (IBAction)onCall:(id)sender
{
DashCaller *caller = [[DashCaller alloc] init];
NSString *callNumber = _phone.number;
if (!callNumber)
{
callNumber = @"No Phone number";
}
else if (callNumber.length == 0)
{
callNumber = @"No Phone number";
}
else
{
callNumber = [callNumber stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}
DashDelegate.calledPhone = _phone;
DashDelegate.callLogVC.delegate = _viewController;
DashDelegate.callStartDate = [NSDate date];
NSUserDefaults *setting = [NSUserDefaults standardUserDefaults];
NSNumber *blockNumber = [setting valueForKey:BLOCK_NUMBER];
NSURL *url = nil;
if (blockNumber.boolValue)
url = [NSURL URLWithString:[NSString stringWithFormat:@"tel://%@%@", kStringBlockNumber, callNumber]];
else {
url = [NSURL URLWithString:[NSString stringWithFormat:@"tel://%@", callNumber]];
}
[caller callTelURL:url];
}
具体来说,“DashDelegate.callLogVC.delegate = _viewController;”这一行 似乎它应该调用 CallLogVC 视图,但它会转到应该出现在该视图之后的屏幕。
任何想改变什么的人(可能会受到 iOS6 的影响)?该应用程序在 iOS5 中功能齐全。而且,为什么应用程序可能会在注销登录后仅显示一次此页面,然后停止显示?