You are welcome. By the way, you may submit a feature request, I will vote for it.
On 30 May 2015 at 00:11, maitai <[email protected]> wrote: > I have already spend 3 days on that when the same thing on Android took > me 5 minutes, so I think I'm not going to swizzle anything soon ;) I might > give it a try one day though. I believe that should be anyway a part of qt > API. > > Thanks all for your advice and comments > > Philippe. > > > > > Le 29-05-2015 16:08, Ben Lau a écrit : > > > Depend on what kind of function you should to override. Just checked the > source code of QIOSViewController , shouldAutorotate is seem to be OK. > Moreover, Harri Pasanen has suggested swizzling, which could replace a > method and call the original one by the wrapper. > > On 29 May 2015 at 21:43, maitai <[email protected]> wrote: > >> I think you can do that because openUrl is the only method implemented >> in the original QIOApplicationDelegate. So in fact you added >> didFinishLaunchingWithOptions and replaced openUrl. But if there were other >> methods (and QIOViewController has many), you would have been obliged to >> duplicate them all, at least that's what I understand. Am I wrong? >> >> >> >> >> Le 29-05-2015 15:33, Ben Lau a écrit : >> >> >> You may override existing method just like what I did to openUrl and >> didFinishLaunchingWithOptions >> on QIOSApplicationDelegate even you don't have the header file. >> >> >> >> >> On 29 May 2015 at 21:25, maitai <[email protected]> wrote: >> >>> I tried but didn't succeed. If I understand well (which is far from >>> being certain), I can only add new methods or properties that way, not >>> override existing ones unless a protocol is defined that would allow me to >>> create a delegate on QIOViewController, but there is no as far as I can see. >>> >>> I might be wrong, though. I even hope so. >>> >>> >>> >>> >>> Le 29-05-2015 15:18, Ben Lau a écrit : >>> >>> >>> Why don't use categories that suggested by people here? >>> >>> >>> On 29 May 2015 at 21:11, maitai <[email protected]> wrote: >>> >>>> Finally got it working... with a bad hack >>>> >>>> I cloned QIOSViewController.h and .mm from qt sources (and added qt's >>>> iOS headers in my include path, I already had core-private and >>>> gui-private in my pro files) and modified it to do what I want. I also >>>> had to add a lockedOrientation property to it for some mysterious >>>> reason... >>>> >>>> At least it's doing what I need (i.e. ignore device rotation when I >>>> decide to). Of course it's a really bad hack and I'm still hoping >>>> someone can point me to a better solution. >>>> >>>> Thanks >>>> Philippe. >>>> >>>> >>>> Le 29-05-2015 11:24, maitai a écrit : >>>> > I had a look at QT sources... Basically what I want to do is override >>>> > QIOSViewController:shouldAutorotate. >>>> > >>>> > I tried >>>> > @interface MyIOSViewController : QIOSViewController >>>> > @end >>>> > @implementation MyIOSViewController >>>> > - (BOOL) shouldAutorotate { >>>> > NSLog(@"Inside shouldAutorotate"); >>>> > return NO; >>>> > } >>>> > >>>> > It compiles and does not crash (I import QIOSViewController.h), but >>>> > that >>>> > all it does... >>>> > >>>> > >>>> > Le 29-05-2015 10:23, Harri Pasanen a écrit : >>>> >> Compared to C++, Objective-C is very dynamic language and you can do >>>> >> many things at runtime. >>>> >> >>>> >> So you can add methods to existing classes using categories: >>>> >> >>>> https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/CustomizingExistingClasses/CustomizingExistingClasses.html >>>> >> >>>> >> Or resort to something quite funky to replace existing methods: >>>> >> https://github.com/rentzsch/jrswizzle >>>> >> >>>> >> As to your original question, rotation handling is surprisingly >>>> tricky >>>> >> even in pure Objective-C if you want to conditionally rotate. For >>>> >> instance iOS 8.3 broke some of my code handling that which had worked >>>> >> fine since iOS 6, pure Objective-C. >>>> >> >>>> >> I don't know how Qt hooks into it. >>>> >> >>>> >> Harri >>>> >> >>>> >> On 29/05/2015 09:41, Robert Iakobashvili wrote: >>>> >>> On Fri, May 29, 2015 at 8:38 AM, maitai <[email protected]> >>>> >>> wrote: >>>> >>>> Thanks Ben for your reply >>>> >>>> >>>> >>>> After much digging I made some progress but I am still looking for >>>> a >>>> >>>> way to >>>> >>>> temporary lock screen auto rotation. >>>> >>>> >>>> >>>> I have created my own app delegate to catch openUrl(), and >>>> >>>> surprisingly it >>>> >>>> works. I register my app delegate from main.cpp by calling >>>> something >>>> >>>> like >>>> >>>> this: >>>> >>>> >>>> >>>> void QtAppDelegateInitialize () >>>> >>>> >>>> >>>> { >>>> >>>> >>>> >>>> QtAppDelegate *appDelegate = (QtAppDelegate *)[[UIApplication >>>> >>>> sharedApplication] delegate]; >>>> >>>> >>>> >>>> [[UIApplication sharedApplication] setDelegate:[QtAppDelegate >>>> >>>> sharedQtAppDelegate]]; >>>> >>>> >>>> >>>> NSLog(@"Created a new appdelegate"); >>>> >>>> >>>> >>>> } >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> I then found this very interesting post: >>>> >>>> >>>> https://forum.qt.io/topic/48745/how-to-get-didfinishlaunchingwithoptions-called-in-ios-delegate/7 >>>> >>>> which links to this bug report: QTBUG-38184. >>>> >>>> >>>> >>>> First question: I am now wondering how my delegate can possibly >>>> work >>>> >>>> since >>>> >>>> it seems I can have only one delegate... so what happened to >>>> >>>> QIOSApplicationDelegate? >>>> >>>> >>>> >>>> I then tried various things to add yet another delegate this time >>>> >>>> based on >>>> >>>> UINavigationControllerDelegate, but although after much sweat it >>>> >>>> seems to >>>> >>>> load, the various methods I am trying to override are never called >>>> >>>> when I >>>> >>>> rotate the device. >>>> >>>> >>>> >>>> Could it be that I should instead modify/interface >>>> >>>> QIOSApplicationDelegate >>>> >>>> itself and not try to create my own delegates? >>>> >>>> >>>> >>>> A bit confused at this point, I admit ;) >>>> >>>> >>>> >>>> Thanks for any tip >>>> >>>> >>>> >>>> Philippe Lelong >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> Le 27-05-2015 20:24, Ben Lau a écrit : >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> On 28 May 2015 at 02:07, maitai <[email protected]> wrote: >>>> >>>>> Hello all, >>>> >>>>> >>>> >>>>> I've started to port on iOS and need to override some methods, >>>> like >>>> >>>>> we >>>> >>>>> do easily through Java on Qt/Android. I succeeded to implement an >>>> >>>>> appDelegate in objective-C that works for some events like openURL >>>> >>>>> and >>>> >>>>> such, but for instance I also need to lock automatic screen >>>> >>>>> rotation >>>> >>>>> in >>>> >>>>> some circumstances (but not always). >>>> >>>> >>>> >>>> Objective-C has a feature to replace the original method of a >>>> class. >>>> >>>> So you >>>> >>>> may just override the method you needed (In case it don't break Qt) >>>> >>>> Customizing Existing Classes >>>> >>>> >>>> >>>> Example Code: >>>> >>>> quickios/appdelegate.mm at >>>> 0b067e17dc13b8533ca3f7dd574d7e81ea17a015 >>>> >>>> · >>>> >>>> benlau/quickios >>>> >>>> >>>> >>>> I have tested to override openURL and didFinishLaunchingWithOptions >>>> >>>> of >>>> >>>> AppDelegate with Qt 5.4.1. This method works. >>>> >>>> >>>> >>>>> I read that I should somehow override "bool >>>> >>>>> UINavigationController::shouldRotate()" >>>> >>>> >>>> >>>> Never tried. But should be worth to try? I am also be interested >>>> >>>> with >>>> >>>> your >>>> >>>> result. >>>> >>>> >>>> >>>>> Should I reimp (subclass?) UINavigationController and how? Or is >>>> >>>>> there a >>>> >>>>> way to create a new delegate or even better to extend my current >>>> >>>>> appDelegate? >>>> >>>>> >>>> >>>>> >>>> >>>>> I'm new to Objective-C as you can guess... Any clue would be >>>> really >>>> >>>>> appreciated :) >>>> >>>>> >>>> >>>>> Thanks >>>> >>>>> Philippe Lelong >>>> >>> Dear Philippe, >>>> >>> >>>> >>> Please see the reply Tor Arne inside >>>> >>> >>>> >>> https://bugreports.qt.io/browse/QTBUG-42123 >>>> >>> >>>> >>> That could be an answer - Let it be. >>>> >>> >>>> >>> Sincerely, >>>> >>> Robert >>>> >>> _______________________________________________ >>>> >>> Interest mailing list >>>> >>> [email protected] >>>> >>> http://lists.qt-project.org/mailman/listinfo/interest >>>> >> >>>> >> _______________________________________________ >>>> >> Interest mailing list >>>> >> [email protected] >>>> >> http://lists.qt-project.org/mailman/listinfo/interest >>>> > _______________________________________________ >>>> > Interest mailing list >>>> > [email protected] >>>> > http://lists.qt-project.org/mailman/listinfo/interest >>>> _______________________________________________ >>>> Interest mailing list >>>> [email protected] >>>> http://lists.qt-project.org/mailman/listinfo/interest >>>> >>> >>> _______________________________________________ >>> Interest mailing list >>> [email protected] >>> http://lists.qt-project.org/mailman/listinfo/interest >> >> >> _______________________________________________ >> Interest mailing list >> [email protected] >> http://lists.qt-project.org/mailman/listinfo/interest >> > > _______________________________________________ > Interest mailing list > [email protected] > http://lists.qt-project.org/mailman/listinfo/interest > >
_______________________________________________ Interest mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/interest
