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

Поиск сообщества

Показаны результаты для тегов 'webview'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Общие вопросы
    • Анимация
    • Графика
    • Стили
    • Базы данных и REST
    • Компоненты
    • Положение, размеры, выравнивание
    • Работа с текстом
    • Приложение и формы
    • Отладка
    • Развертывание приложений
    • Вопросы по языку Object Pascal и RTL
    • Общая информация о TControl
    • События
    • Прочие вопросы
  • Вопросы по платформам
    • Android
    • iOS
    • OSX
    • Windows
    • Windows Phone
    • Linux
  • Вопросы по использованию RAD Studio
    • Лицензирование
    • Сборка проектов
    • Multi-Device Designer
    • Редактор кода
    • Вопросы
  • Обучение
    • Основная информация
    • Вопросы
    • Отзывы
  • Поиск специалистов по FireMonkey
    • Консультации
    • Ищу подрядчика
  • Дополнительные ресурсы по FireMonkey
    • Сторонние компоненты
    • Приложения, написанные с использованием FireMonkey
    • Примеры
    • Руководства
    • Шаблоны
    • Статьи и заметки
    • Информация о версиях RAD Studio
    • Новости
  • Организация работы данного форума

Поиск результатов в...

Поиск контента, содержащего...


Дата создания

  • Начало

    Конец


Дата обновления

  • Начало

    Конец


Фильтр по количеству...

Регистрация

  • Начало

    Конец


Группа


AIM


MSN


Сайт


ICQ


Yahoo


Jabber


Skype


StackOverflow


Защита от ботов


Город


Интересы

Найдено: 2 результата

  1. A_l_ex

    WebView и TWebBrowser

    Уважаемые форумчане, искал на форуме, но возможно не нашел что-то похожее по своему вопросу ... Нужна возможность использовать жесты в TWebBrowser. Стандартные жесты в FMX как я понял не работают, TWebBrowser очевидно благополучно игнорирует их. Читая API на developer.apple.com нашел то что нужно setAllowsBackForwardNavigationGestures. Данное действо доступно в модуле iOSapi.WebKit. Как заставить TWebBrowser на форме выполнять это требование? В попытках найти решение пытался выполнить такое извращение, явно осознавая что это не совсем то что нужно: На форуме нашел такой запрос но он за 2014 год и проблема в том что мне нужно не создавать свой WebView а попытаться заставить родной TWebBrowser делать это. Но если это не возможно то прошу подсказать как воткнуть на форму свой WebView. Читал что есть возможность использовать Deligate но как именно это делать, пока не понятно. Буду рад любым вариантам! P.S. Забыл упомянуть. Студия разработки RAD Studio 10.4.2 Sydney. Аппаратура MacBook Pro 13 Big Sur 11.2.3 + XCode 12.5 + Apple iPhone 11(14.5).
  2. Помогите портировать интерфейсы для реализации делегата для WebView.setPolicyDelegate, с помощью которого можно запрещать или переопределять переходы по ссылкам. Отталкивался от хелпа эпла. Реализовал вроде как все, что нужно. Страница гугла открывается, но колбэк делегата не вызывается. unit MainFormUnit; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, Macapi.AppKit, Macapi.CocoaTypes, Macapi.Foundation, Macapi.ObjectiveC, FMX.StdCtrls, Posix.Stdlib, Macapi.CoreFoundation, FMX.Platform.Mac, System.Generics.Collections; type WebFrameClass = interface(NSObjectClass) ['{7BE750C8-DFEC-4870-851A-12DBCB0B78F6}'] end; WebFrame = interface(NSObject) ['{BCFA04BE-41AB-4B78-89C0-3330F12C7695}'] procedure loadRequest(request: NSURLRequest); cdecl; end; TWebFrame = class(TOCGenericImport<WebFrameClass, WebFrame>) end; WebViewClass = interface(NSViewClass) ['{0D9F44B7-09FD-4E35-B96E-8DB71B9A2537}'] {class} function canShowMIMEType(MIMEType: NSString): Boolean; cdecl; end; WebView = interface(NSView) ['{C36D8016-2FCB-49F0-BA1C-C9913A37F9AC}'] procedure clos; cdecl; procedure setPolicyDelegate(delegate: Pointer); cdecl; procedure setHostWindow(hostWindow: NSWindow); cdecl; function initWithFrame(frame: NSRect; frameName: NSString; groupName: NSString): Pointer; cdecl; function mainFrame: WebFrame; cdecl; end; TWebView = class(TOCGenericImport<WebViewClass, WebView>) end; WebPolicyDecisionListener = interface(IObjectiveC) ['{2AD8355D-6C57-410D-A4F4-230C90B6D799}'] procedure download; cdecl; procedure ignore; cdecl; procedure use; cdecl; end; WebViewDelegate = interface(IObjectiveC) ['{5B66FF5F-DA92-48D3-A715-C89A68AA8995}'] procedure decidePolicyForNavigationAction(actionInformation: NSDictionary; request: NSURLRequest; frame: WebFrame; listener: WebPolicyDecisionListener); cdecl; end; TWebViewDelegate = class(TOCLocal, WebViewDelegate) procedure decidePolicyForNavigationAction(actionInformation: NSDictionary; request: NSURLRequest; frame: WebFrame; listener: WebPolicyDecisionListener); cdecl; end; TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); public MyWebView: WebView; MyDelegate: TWebViewDelegate; end; var Form1: TForm1; implementation {$R *.fmx} procedure TForm1.FormCreate(Sender: TObject); var PWebView: Pointer; FwkMod: HMODULE; urlStr: NSURL; urlreq: NSURLRequest; MyView: NSView; const WebKitFWK: string = '/System/Library/Frameworks/WebKit.framework/WebKit'; begin FwkMod := System.SysUtils.LoadLibrary(PWideChar(WebKitFWK)); PWebView := TWebView.Alloc.initWithFrame(MakeNSRect(10, 10, 500, 500), nil, nil); MyWebView := TWebView.Wrap(PWebView); MyWebView.setAutoresizingMask(NSViewHeightSizable or NSViewWidthSizable); //MyWebView.setHostWindow(MyNSWindow); MyView := WindowHandleToPlatform(Form1.Handle).View; MyView.addSubview(MyWebView); MyDelegate := TWebViewDelegate.Create; MyWebView.setPolicyDelegate((MyDelegate as ILocalObject).GetObjectID); urlStr := TNSURL.Wrap(TNSURL.Alloc.initWithString(NSSTR('http://www.google.com/'))); urlreq := TNSURLRequest.Wrap(TNSURLRequest.Alloc.initWithURL(urlstr)); MyWebView.mainFrame.loadRequest(urlreq); urlStr.release; urlreq.release; end; { TWebViewDelegate } procedure TWebViewDelegate.decidePolicyForNavigationAction( actionInformation: NSDictionary; request: NSURLRequest; frame: WebFrame; listener: WebPolicyDecisionListener); begin MessageDlg('hi', TMsgDlgType.mtInformation, [TMsgDlgBtn.mbOK], 0); end; end. Также не совсем понятно, где должен располагаться метод webView:decidePolicyForNavigationAction:request:frame:decisionListener. В документации он объявлен как: - (void)webView:(WebView *)webView decidePolicyForNavigationAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request frame:(WebFrame *)frame decisionListener:(id < WebPolicyDecisionListener>)listener Т.е. похоже на то, что он должен быть методом класса WebView? Или же методом произвольного класса делегата? И еще, я так понимаю, что полное имя этого метода webView:decidePolicyForNavigationAction:request:frame:decisionListener, то есть объявляя его как decidePolicyForNavigationAction возможно мы лишаем mac os возможности найти его. Но как же тогда объявить его полностью?
×
×
  • Создать...