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
