Перейти к содержанию
Fire Monkey от А до Я
  • 0

[iOS] Как добавить свой UIApplicationDelegate к UIApplication?


estra

Вопрос

Не получается разобраться как добавить к главной форме приложения UIApplicationDelegate. Написал так:

unit Unit2;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
  System.Actions, FMX.ActnList,
  Macapi.ObjectiveC, iOSapi.UIKit, iOSapi.Foundation, iOSapi.CoreGraphics, iOSapi.CocoaTypes,
  System.Sensors, System.Sensors.Components;

type
  TOnOpenURL = procedure (const URL: NSURL) of object;

  UIAppDelegate = interface( IObjectiveC )
  ['{91C422D1-5D97-4258-B2A8-EF46852364B2}']
    function application_handleOpenURL(Sender: UIApplication; handleOpenURL: NSURL): Boolean; cdecl;
  end;

  TUIAppDelegate = class( TOCLocal, UIAppDelegate )
  strict private
    FOnOpenURL: TOnOpenURL;
  public
    [MethodName('application:handleOpenURL:')]
    function application_handleOpenURL( Sender: UIApplication; handleOpenURL: NSURL ): Boolean; cdecl;
    property OnOpenURL: TOnOpenURL read FOnOpenURL write FOnOpenURL;
  end;

  TForm2 = class(TForm)
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
  private
    UIAppDelegate: TUIAppDelegate;
    procedure DoOpenURL (const URL: NSURL);
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.fmx}

uses
  FMX.Helpers.iOS, Macapi.ObjCRuntime;

function OpenURL(const AUrl: string): Boolean;
var
  Url: NSURL;
begin
  Url := TNSUrl.Wrap(TNSUrl.OCClass.URLWithString(NSStr(AUrl)));
  Result := SharedApplication.openUrl(Url);
end;

procedure TForm2.DoOpenURL(const URL: NSURL);
begin
   Label1.Text := '123';
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
   UIAppDelegate := TUIAppDelegate.Create;
   UIAppDelegate.OnOpenURL := DoOpenURL;
end;

{ TUIAppDelegate }

function TUIAppDelegate.application_handleOpenURL(Sender: UIApplication;
  handleOpenURL: NSURL): Boolean;
begin
   MessageDlg( 'hi', TMsgDlgType.mtInformation, [TMsgDlgBtn.mbOK], 0 );
end;

end.

Только метод делегата не срабатывает. Подскажите, как заставить делегат работать?

Ссылка на комментарий

Рекомендуемые сообщения

Ответов пока нет

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...