I’ve an application which is working fine on iOS 4.0 or higher but keep crashing immediately after launch on device 3.1.3 or lower. I’ve set “Base SDK” to “4.1” and “Deployment Target” to “3.0”.
Crash Log –
Dyld Error Message:
Symbol not found: _UIKeyboardFrameEndUserInfoKey
Referenced from: /var/mobile/Applications/FE470A03-6285-48E4-B188-A0023500AA84/XXX
Expected in: /System/Library/Frameworks/UIKit.framework/UIKit
Dyld Version: 149
I’ve weak linking to new frameworks.
Any help greatly appreciated.
Regards,
Amit
The constant UIKeyboardFrameEndUserInfoKey was introduced with iOS 3.2. So it’s not available on a 3.1.3 device. Furthermore, the constant is defined in the UIKit framework. So weakly linking to new frameworks is not sufficient because UIKit is an old framework.
I see two options:
Switch to weak linking for UIKit (and make sure the constant isn’t used on older devices).
Replace the use of UIKeyboardFrameEndUserInfoKey with UIKeyboardBoundsUserInfoKey. It’s deprecated and works slightly differently. But it still works.