2

このコードは iOS 6 では問題なく動作しましたが、iOS 7 ではテキスト フィールドがナビゲーション バーで灰色になり、クリックできませんか? この写真の違いを見てください

ここに画像の説明を入力

何が間違っている可能性がありますか? iOS 7 で何が変更されたのか正確にはわかりません。また、この問題を解決するためにどこから始めればよいかわかりません...

/よろしく

UITextField *sbTextField = (UITextField *)[searchBar.subviews lastObject];
[sbTextField removeFromSuperview];

CGRect rect = searchBar.frame;
rect.size.height = 32;
rect.size.width = 210;
sbTextField.frame = rect;
 // [sbTextField setKeyboardType:UIKeyboardTypeNumbersAndPunctuation]; Not working in iOS7
 // [sbTextField setPlaceholder:NSLocalizedString(@"HintSearchExercise", nil)]; Not working in iOS 7

[sbTextField setAutoresizingMask:UIViewAutoresizingFlexibleBottomMargin];
[searchBar removeFromSuperview];

UIBarButtonItem *searchBarNavigationItem = [[UIBarButtonItem alloc] initWithCustomView:sbTextField];

[[self navigationItem] setLeftBarButtonItem:searchBarNavigationItem];
4

1 に答える 1

3

ios7ではテキスト フィールドで[searchBar.subviews lastObject]なくUIView、コントロールの周りに追加のコンテナーとして機能するインスタンスです。

cocktailiciousで同じ問題を抱えているため、次のカテゴリを使用する予定UISearchBarです。

@interface UISearchBar (Workarounds)
@property (readonly, nonatomic) UITextField *textField;
@end

@implementation UISearchBar (Workarounds)
- (UITextField *)textField
{
    for (UIView *view in [self subcontrols]) {
        if ([view isKindOfClass:[UITextField class]]) {
            return (UITextField *)view;
        }
    }
    return nil;
}

- (NSArray *)subcontrols
{
    return self.subviews.count == 1 ? [self.subviews.firstObject subviews] : self.subviews;
}
@end

メソッドは- subcontrolsここでトリックを行います。

于 2013-10-08T19:05:12.010 に答える