4

我需要在我的 iOS 应用程序中打开一个带有 safari 的网页。
XE2 有iphoneall单元,它暴露了UIApplication。XE4 不再使用 FPC,所以我不能使用它。
Embarcadero 文档 说我只能将 SDK 与 C++ 或使用 delphi 接口一起使用(而且,macapi 仅适用于 OSX,而​​不适用于 iOS)。所以,UIKit框架好像没有接口?!
我尝试的另一个解决方案是:

_system('open http://www.google.com');

但这根本没有影响!
有没有其他方法可以打开网址,或者我运气不好?
我知道 ios 有 TWebBrowser 组件,但我不想走这条路只是为了显示一个网页。

4

1 回答 1

5

一次偶然的机会,Embarcadero 的某个人在两天前发布了一个代码片段来执行此操作。

如果您使用的是 XE4,请查看示例,您可以找到最终代码所在的一个(抱歉,不确定名称):

OpenURL('http://www.embarcadero.com');

这使用了 XE4 FireMonkey 框架和 David Clegg 编写的类助手,在示例中可用。

如果你使用的是旧版本的 FireMonkey,你可以使用比较麻烦的代码:

function SharedApplication: UIApplication;
begin
  Result := TUIApplication.Wrap(TUIApplication.OCClass.sharedApplication);
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
  SharedApplication.openURL(TNSURL.Wrap(TNSURL.OCClass.URLWithString(NSSTR(PChar(String('http://www.embarcadero.com'))))));
end;

(署名:代码片段均从链接的博客文章中复制。)

还有一个来自 FireMonkey 早期的非常古老的论坛帖子,展示了如何解决这些问题(基本上,字符串 <-> NSString <-> NSURL),虽然它有点过时 - 正如你所看到的上面的代码,FireMonkey 已经非常成熟了——它可以让我们深入了解代码的根本原因。

于 2013-05-03T10:22:53.860 回答