UISearchBar работает на симуляторе, но не работает на устройстве - PullRequest
0 голосов
/ 23 февраля 2012

Я использую UISearchBar в своем приложении.Когда я бегу на симуляторе все нормально.На устройстве не работает.На устройстве моя рамка поиска меняется, но клавиатура не отображается.NSlog с работают.Мой код здесь:

-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {

    NSLog(@"wrote");
}

-(BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {

    [self.mySearchBar setFrame:CGRectMake(0,100,mySearchBar.frame.size.width,mySearchBar.frame.size.height)];
    mySearchBar.showsCancelButton=TRUE;
    mySearchBar.text=@"nowwrite";
    NSLog(@"chosed");    
}

-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {

    NSLog(@"cancel");
}

- (void)viewDidLoad
{
    mySearchBar.delegate=self;
    [super viewDidLoad];
}

и мой файл .h

@interface sehirRehberi : UIViewController <UISearchBarDelegate,MKMapViewDelegate,CLLocationManagerDelegate,UINavigationControllerDelegate> {
    IBOutlet UISearchBar *mySearchBar;
}

@property(retain, nonatomic) UISearchBar *mySearchBar;

Ответы [ 2 ]

0 голосов
/ 03 декабря 2012

У меня была похожая проблема, что «UISearchBar» появился в симуляторе, но не в реальном устройстве.Я исправил проблему, вызвав конструктор с NibName, когда поместил UISearchBar в nib-файл.

[MyUITableViewController initWithNibName:@"MyUITableViewController" bundle:nil];
0 голосов
/ 23 февраля 2012

Вы сделали вид первым ответчиком? Это необходимо для отображения клавиатуры. Я не уверен, почему он работает на симуляторе, но вы должны вызвать [self becomeFirstResponder]; в вашем методе viewDidLoad, чтобы позволить представлению получать события клавиатуры и, таким образом, показывать клавиатуру. Когда вы закончите (viewWillDisappear и т. Д.), Просто позвоните [self resignFirstResponder];. Я думаю, что это твоя проблема. Трудно сказать без дополнительного объяснения / кода.

...