iOS 7のUITextViewのバグを1行で直す裏ワザ
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"UIDisableLegacyTextView"];
解説
iOS 7にはバグだらけのUITextViewのほかに_UICompatibilityTextViewというiOS 6以前のUITextView(と思われる)クラスがあり、
メモ(Notes.app)など同様の不具合が再現しない標準アプリは_UICompatibilityTextViewが使われている。
そしておそらくこのフラグによってUITextViewをインスタンス化したときにどちらが使用されるかが変わる。
以下のようにmain.mあたりで設定すると有効になる。
#import <UIKit/UIKit.h> #import "AppDelegate.h" int main(int argc, char * argv[]) { @autoreleasepool { [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"UIDisableLegacyTextView"]; return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } }