IOS HTML Element

Wir verwenden in einem IOS Web Element den Zugriff auf Web Apps mit verschiedenen Profilen. Die IOS App kann bereits im App Store geladen werden. Beim laden von Inhalten sollen diese wie auch in Safari mit den Fingern gezoomt werden. Wie lassen sich die Eigenschaften implementieren. Die Grundausstattung der IOS Apps in Xojo ist dermaen dnn… das man es kaum gebrauchen kann.

Hat jemand eine Idee?

fang mal an bei Apple zu lesen:

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIWebView_Class/

vielleicht findest du da ja eine Funktion, die das vielleicht macht.
Dann könnte man schauen, wie der Declare dazu geht.

Was du brauchst, dürfte ein GestureRecognizer sein. Davon gibt es meines Wissens mehrere Implementationen, schau mal bei den iOS-Declares nach.

Hallo Ulrich, hallo Christian,

Gedacht habe ich mir das bereits, allerdings ist mir noch unklar wie ich die Declares richtig umsetzte. Es ist fast schwiriger die Sachen in Xoxo zu implementieren als in Swift. (Habe ich auch mal Probiert) Gibt es irgendwo schon sinnvolle Beispiele wie ich das mit den HTML Element umsetzte.

Da es keinerlei Literatur gibt sind größere Projekte in IOS Xoxo zur Zeit einfach zu aufwendig, würde gerne diese kleine Projekt aber abschließen und ein Update im AppStore machen.

Vielen Dank im Voraus …Wäre schön wenn Ihr einen Tipp habt wie ich das implementiere.

Herzliche Grüße
Bernhard

Hallo ich nochmal…

Declare Function alloc Lib “Foundation.Framework” selector “alloc” (classRef As Ptr) As Ptr
Declare Function NSClassFromString Lib “Foundation.Framework” (classname As CFStringRef) As Ptr

Declare Sub goBack Lib “UIKit” () 'Declare Richtig? ist ja VOID

Wie aber setzte ich jetzt den Pointer (das Handel) auf den HTMLViewer1 (Xojo Control)

Hallo Bernhard,

ich bin mir nicht ganz sicher, was du erreichen willst. Ein neues, natives Steuerelement allozieren? Oder einfach auf den HTMLViewer zugreifen? Dessen “Adresse” sozusagen wre Ptr(handle), um einen API-kompatiblen Handle zu bekommen.

Hallo Ullrich, Danke genau das möchte ich… aber wie löse ich dann das [b]goBack/b aus

Declare Sub goBack Lib “UIKit” ()
Declare Function alloc Lib “Foundation.Framework” selector “alloc” (classRef As Ptr) As Ptr
Declare Function NSClassFromString Lib “Foundation.Framework” (classname As CFStringRef) As Ptr

Dim MyHtmlControlPtr As Ptr = Ptr(HTMLViewer1.Handle)

’ MyHtmlControlPtr.goBack geht ja nicht :wink:

Hm, aber goBack ist doch eine native Funktion des HTMLViewers, den du doch vor dir hast, oder? Also einfach HTMLViewer1.goBack.

Da diese Antwort aber zu trivial ist, schwebt dir vermutlich irgendeine Programmstruktur vor, die ich nicht richtig erahne. Magst du das Problem und deine Absicht, was passieren soll, genauer definieren?
Danke dir!

Hallo Ulrich, anscheinend nicht unter IOS… für Windows, OSX oder fürs WEB ist die Methode verfügbar nur nicht unter IOS … wie so vieles leider nicht! Wenn du mir (auch wenn es trivial ist) helfen kannst bin ich dir sehr dankbar!

LG Bernhard

Schau das ist alles… hier fehlt mir noch vieles… für mein kleines Projekt! :wink:

Oh! Das war mir noch gar nicht bewusst. Die HTML-Viewer sind nach meiner Kenntnis custom Controls, da kommt man mit Declares vermutlich nicht weiter. (Fragezeichen an Christian …).

Was mir in diesem Fal ad hoc einfällt, wäre ein Array der besuchten Seiten anzulegen – bei einer neuen Seite wird die URL dort eingetragen. Noch ein Pointer vom Typ UInteger dazu, der auf das aktuelle Array-Element zeigt. Und dann eine Modulmethode GoBackfür iOSHTMLViewer, die schaut, ob der obige Pointer > 0 ist und wenn ja, diesen zurücksetzt und die URL des dortigen Array-Elements anzeigt. In ähnlicher Art lässt sich dann auch gleich ein GoForward implementieren.

Kannst du damit was anfangen?

Prinzipiell wre das sicherlich ok aber dann bruchte ich ein Event welches mir den Klick auf einen Link auswertet… und die URL liefert! Das HTMLViewer Element ist so einfach unbrauchbar. Es hat ledigliche ein Event “Open” und “Activate”…

Erneutes Oh! Da fehlt mir gerade die Idee. Mit Declares kmst du m.E. nur an das iOSCOntrol ran, auf dem der Viewer aufsetzt, und das hilft auch nicht, weil es ja keine HTML-Events kennt.

Sind deine Englisch-Kenntnisse so, dass du eine Anfrage ins iOS-Forum stellen knntest, ob es eine Mglichkeit gibt, an die Events zu kommen? Sonst mach ich das gerne.

ich kann es versuchen… wenn du aber noch einmal etwas weist… schreib mir ruhig…

Danke…

Ich hab was gefunden, Bernhard. Ist jetzt allerdings gerade auch erst uerst grob und ganz und gar nicht komfortabel; das lsst sich aber leicht ndern. Schau dir bitte mal https://github.com/UBogun/Xojo-iosLib an und stelle vor dem Kompilieren auf View2 um. Da findest du ein einfaches Browserview, und zugleich wurde ein NotificationCenter angelegt, das zurzeit allerdings noch auf smtliche Notifications anspricht. Eigentlich msste man dem Ding ein Objekt als Sender zuweisen knnen, aber versuche ich das, schweigt es.

Stell dann mal die IDE in die Ansicht der Debug-Meldungen um, gib eine URL ein und drck auf den Knopf. Dann rattert eine Riesenliste von Notifications durch, unter anderem auch “WebProgressStarted” und “WebProgressEstimateChanged”, wobei ein Wert von 1 dem Abschluss des Ladens zu entsprechen scheint.

Wie gesagt, alles noch nicht komfortabel und luft gerade mal seit 2 Minuten, aber da liee sich vermutlich was draus basteln.

Zunchst einmal vielen Dank Ulrich fr deine Antwort und Mhe!!! Ich schaue mir das mal an… ob da was brauchbares rauskommt…

Oh Man, ich bin echt frustriert… über 1 Jahr nach Ankündigung von Xojo für IOS so ein schwaches Werkzeug ab zu liefern… Als Enterprise Kunde zahlen wir jedes Jahr Geld … das ärgert mich! Wie sollen die Wettbewebsfähig bleiben … wenn man das mit AppMethod (ehemals Delphi) vergleicht.

Hallo Bernhard,
ich kann deine Emotionen durchaus nachvollziehen und will an dieser Stelle auch gar keine beschwichtigenden Worte einwerfen – Erklärungen zur Situation gibt es an anderer Stelle schon genug. Lass uns mal schauen, wie wir dir helfen können.

Konntest du die Event-Ergebnisse sehen? Und wenn ja: Würde es dir helfen, einen Wrapper zu haben, der HTML-Events “URLUpdated started” und “URLUpdatefinished” als Xojo-Events signalisiert? Sowas könnte ich, glaube ich, mit nur wenig Aufwand zusammenzimmern.

der Declare geht so für goBack:

Declare Sub goBack Lib "UIKit" selector "goBack" (Ref as ptr) goBack(HTMLViewer1.Handle)

Das geht? Ist der HTMLViewer doch ein natives Control? Wie heit das denn auf Apple?