Objective C UISearchBar может не отвечать на setContentInset - PullRequest
0 голосов
/ 16 сентября 2011

Пропустит ли приложение, содержащее это предупреждение, обзор App Store?

С помощью кода оно фактически отображается в симуляторе iPhone, но как мне удалить упомянутое предупреждение в Xcode?

РЕДАКТИРОВАТЬ 20 сентября 2011 г .:

Я когда-нибудь опубликую код, который удаляет это предупреждение.

РЕДАКТИРОВАТЬ 9 октября 2011 г .:

Вот мое решение, так как я не смог найтилюбое другое лучшее и простое решение:

    UIView *extrablue = [[UIView alloc] initWithFrame:CGRectMake(250,0,80,40)];
    extrablue.backgroundColor = RGBCOLOR (95,95,95);
    [self.view addSubview:extrablue];
    mySearchBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 0, 250, 40)];
    //[mySearchBar setContentInset: UIEdgeInsetsMake(5,0,5,75)];
    mySearchBar.placeholder = @"Search a term here ... ";
    mySearchBar.backgroundColor = RGBCOLOR (95,95,95);
    mySearchBar.delegate = self;
    //[mySearchBar sizeToFit];
    mySearchBar.autocorrectionType = UITextAutocorrectionTypeNo;
    [mySearchBar setAutocapitalizationType:UITextAutocapitalizationTypeNone];
    [self.view addSubview: mySearchBar];

Ответы [ 2 ]

2 голосов
/ 16 сентября 2011

UISearchBar не содержит свойство contentInset - это свойство UIScrollView.Если ваш код просит UISearchBar изменить его contentInset, то это ошибка кодирования, и ее следует удалить.

Если вам нужна дополнительная помощь, чтобы удалить это, тогда некоторый дополнительный код будет полезен.1008 *

1 голос
/ 16 января 2012

Я обнаружил, что UISearchBar отвечает на метод setContentInset: (протестирован на iOS 5.0.1).

Это приводит к изощренному подходу, включающему NSInvocation:

    if([aSearchBar respondsToSelector:@selector(setContentInset:)]) {
        SEL aSelector = NSSelectorFromString(@"setContentInset:");
        NSInvocation *inv = [NSInvocation invocationWithMethodSignature:[aSearchBar methodSignatureForSelector:aSelector]];
        [inv setSelector:aSelector];
        [inv setTarget:aSearchBar];
        UIEdgeInsets anInsets = UIEdgeInsetsMake(5, 0, 5, 35);
        [inv setArgument:&anInsets atIndex:2]; //arguments 0 and 1 are self and _cmd respectively, automatically set by NSInvocation
        [inv invoke];
    }

Приведенный выше код изменяет размер содержимого contentInset UISearchBar (фактически UITextField), используя CGRect, указанный в параметре anInsets.

родительский оператор if (RespondsToSelector :) избавляет себя от изменений этого поведения в новых версиях iOS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...