respondsToSelector
で実行して、iOS6固有の外観メソッドを検出しようとしてい[UIBarButtonItem appearance]
ます。ただし、指定したセレクターが何であれ、常に返さNO
れます。
// Should show NOPE in iOS 5, YEP in iOS 6. Shows NOPE always
NSLog(@"%@", [[UIBarButtonItem appearance] respondsToSelector:@selector(setBackgroundImage:forState:style:barMetrics:)] ? @"YEP" : @"NOPE");
// Should show YEP in both iOS 5 and iOS 6. Shows NOPE always
NSLog(@"%@", [[UIBarButtonItem appearance] respondsToSelector:@selector(setBackgroundImage:forState:barMetrics:)] ? @"YEP" : @"NOPE");
実際にこれらの方法を使用すると、それぞれのバージョンのiOSで問題なく機能しますが、どちらが利用できるかを検出できないようです。では、どうすればそれを適切に行うことができますか?