Presence of UITextField and Pixate Freestyle Crashes on iOS 9

513 Views Asked by At

All of my view controllers that contain UITextField objects crash with the following on iOS 9 in the Simulator:

-[UITextField preventStyling]: unrecognized selector sent to instance 0x7fa8b96d6330

Failed to set (styleClass) user defined inspected property on (UITextField): -[UITextField preventStyling]: unrecognized selector sent to instance 0x7fa8b96d6330

Anyone else running into this with Pixate Freestyle? Any ideas? I logged an issue on the GitHub repo, but it doesn't appear anyone is monitoring those: https://github.com/Pixate/pixate-freestyle-ios/issues/186

Below is the full stack trace:

0   CoreFoundation                      0x000000010749cf65 __exceptionPreprocess + 165
1   libobjc.A.dylib                     0x0000000106f14deb objc_exception_throw + 48
2   CoreFoundation                      0x00000001074a558d -[NSObject(NSObject) doesNotRecognizeSelector:] + 205
3   CoreFoundation                      0x00000001073f2d97 ___forwarding___ + 487
4   CoreFoundation                      0x00000001073f2b28 _CF_forwarding_prep_0 + 120
5   PilotPro                            0x000000010438a3c0 -[PXVirtualStyleableControl preventStyling] + 85
6   PilotPro                            0x000000010436a0fc +[PXStyleUtils updateStyleForStyleable:] + 83
7   PilotPro                            0x00000001043812d8 -[UIView(PXStyling) updateStyles] + 317
8   CoreFoundation                      0x000000010738b85c __invoking___ + 140
9   CoreFoundation                      0x000000010749df49 -[NSInvocation invokeUsingIMP:] + 217
10  UIKit                               0x0000000105d0d773 __workaround10030904InvokeWithTarget_block_invoke + 84
11  UIKit                               0x00000001056b5fe1 +[UIView _performSystemAppearanceModifications:] + 66
12  UIKit                               0x0000000105d0d70d workaround10030904InvokeWithTarget + 1053
13  UIKit                               0x0000000105d07995 applyInvocationsToTarget + 1864
14  UIKit                               0x0000000105d06aac +[_UIAppearance _applyInvocationsTo:window:matchingSelector:onlySystemInvocations:] + 1888
15  UIKit                               0x00000001056d8a36 __88-[UIView(Internal) _performUpdatesForPossibleChangesOfIdiom:orScreen:traverseHierarchy:]_block_invoke + 64
16  UIKit                               0x00000001056d89c0 -[UIView(Internal) _performUpdatesForPossibleChangesOfIdiom:orScreen:traverseHierarchy:] + 189
17  UIKit                               0x00000001056d88d6 -[UIView(Internal) _didChangeFromIdiomOnScreen:traverseHierarchy:] + 182
18  UIKit                               0x00000001056d7ea3 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 1743
19  UIKit                               0x0000000105792b41 -[UIControl _didMoveFromWindow:toWindow:] + 68
20  UIKit                               0x00000001056d7b32 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 862
21  UIKit                               0x00000001056d7b32 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 862
22  UIKit                               0x00000001056ec7d0 -[UIScrollView _didMoveFromWindow:toWindow:] + 85
23  UIKit                               0x00000001056d7b32 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 862
24  UIKit                               0x00000001056d7b32 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 862
25  UIKit                               0x00000001056ec7d0 -[UIScrollView _didMoveFromWindow:toWindow:] + 85
26  UIKit                               0x00000001056d7b32 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 862
27  UIKit                               0x00000001056d7b32 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 862
28  UIKit                               0x00000001056cd106 __45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke + 155
29  UIKit                               0x00000001056cd005 -[UIView(Hierarchy) _postMovedFromSuperview:] + 544
30  UIKit                               0x00000001056daac3 -[UIView(Internal) _addSubview:positioned:relativeTo:] + 1967
31  UIKit                               0x0000000105a83212 -[UINavigationTransitionView transition:fromView:toView:] + 672
32  UIKit                               0x00000001057fd27d -[UINavigationController _startTransition:fromViewController:toViewController:] + 3262
33  UIKit                               0x00000001057fd879 -[UINavigationController _startDeferredTransitionIfNeeded:] + 890
34  UIKit                               0x00000001057fe67d -[UINavigationController __viewWillLayoutSubviews] + 57
35  UIKit                               0x000000010599663d -[UILayoutContainerView layoutSubviews] + 248
36  PilotPro                            0x00000001043a6825 callSuper0 + 55
37  PilotPro                            0x000000010438b259 -[PXUIView layoutSubviews] + 47
38  UIKit                               0x00000001056de11c -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 710
39  QuartzCore                          0x00000001053ab36a -[CALayer layoutSublayers] + 146
40  QuartzCore                          0x000000010539fbd0 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 366
41  QuartzCore                          0x000000010539fa4e _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24
42  QuartzCore                          0x00000001053941d5 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 277
43  QuartzCore                          0x00000001053c19f0 _ZN2CA11Transaction6commitEv + 508
44  QuartzCore                          0x00000001053c2154 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 92
45  CoreFoundation                      0x00000001073c89d7 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
46  CoreFoundation                      0x00000001073c8947 __CFRunLoopDoObservers + 391
47  CoreFoundation                      0x00000001073bdebc CFRunLoopRunSpecific + 524
48  UIKit                               0x000000010562898d -[UIApplication _run] + 402
49  UIKit                               0x000000010562d676 UIApplicationMain + 171
50  PilotPro                            0x000000010417cf84 main + 132
51  libdyld.dylib                       0x000000010798892d start + 1
3

There are 3 best solutions below

1
Oscar Anton On BEST ANSWER

This is a Copy & paste of my solution: https://github.com/Pixate/pixate-freestyle-ios/issues/192

Hi folks,

Like other people, i had several problems with PixateFreestyle framework when i upgraded to Xcode to 7 and Mac OS X El capitan.

After some days researching, i decided to compile my own version of PixateFreestyle framework in order to avoid this problems.

You have my version here: https://www.dropbox.com/s/9cz035h67y9x7fd/PixateFreestyle.framework.zip?dl=0

If you add this framework to your project, when you execute Simulator or create an archive with bitcode enabled all will works like a charm.

If you want to build your own PixateFreestyle framework from source code, follow this steps:

  • Download the project from github
  • Fix the callSuper1v issue: #186
  • Build a universal framework with a custom script
  • Add bitcode support in build process [optional]
  • Add resulting framework to your project

Regards.

0
Jesús Del Río On

I have also run into this problem and my solution, far from perfect, is working :D From this post, I have been able to fix three problems: The preventStyling, playsNicelyWithGestures and _isInteractiveTextSelectionDisabled selector errors. Moreover, I had to add one more function: requiresKeyEvents. With this, problem solved :D

Thank you :)

0
UncaughtException On

While Pixate is no longer supported, a new framework named StylingKit is. StylingKit uses all of Pixate's code in the background so all of your methods should still work and it will not run into any iOS 9 issues.

The exception to this rule is any Pixate static methods like [PixateFreestyle updateStylesForAllViews]. In this case, you can create accessor methods in the StylingKit.m and StylingKit.h files to use the hidden PixateFreestyle functions.

For example if your project relies on updating CSS themes through [PixateFreestyle updateStylesForAllViews], you can create a new method declaration in StylingKit.h like:

    @interface StylingKit : NSObject

        -(void)PixateUpdateStylesForAllViews;
        -(void)OtherHiddenPixateMethod;

Then implement those methods in the StylingKit.m file.

    @implementation StylingKit

        -(void)PixateUpdate
        {
            [PixateFreestyle updateStylesForAllViews];
        }

        -(void)OtherHiddenPixateMethod
        {
            //Your PixateFreeStyle code here
        }

Finally you can call these methods from your project with

    [[StylingKit sharedKit] PixateUpdate];
    [[StylingKit sharedKit] OtherHiddenPixateMethod];