2012-06-12 24 views
1

У меня есть пользовательский UITextField, добавленный в UINavigationItem.titleView. Но он не сталFirstResponder. Почему так?UINavigationItem.titleView canBecomeFirstResponder?

- (void) viewDidLoad 
{ 
    [super viewDidLoad]; 
    UITextField *titleTextField = [[UITextField alloc] initWithFrame:CGRectMake(65.0f, 8.0f, 160.0f, 30.0f)]; 
    titleTextField.text = @"Untitled"; 
    titleTextField.textAlignment = UITextAlignmentCenter; 
    titleTextField.textColor = [UIColor whiteColor]; 
    titleTextField.font = [UIFont boldSystemFontOfSize:20.0f]; 
    //titleTextField.backgroundColor = [UIColor redColor]; 
    titleTextField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 
    titleTextField.delegate = self; 
    titleTextField.tag = 2; 
    self.navigationItem.titleView = titleTextField; 
    [titleTextField becomeFirstResponder] 
} 

Прошу совета.

Thanks in Advance, Bharathi.

+0

Ваш Код кажется прекрасным ... Вы пытались написать выше код в 'viewWillAppear'? – Maulik

+0

@ Маулик Да .. Но это не сработало! –

+0

Сделайте быстрое if..statement, чтобы узнать, может ли он стать первым. например, если ([titleTextField сталFirstResponder]) – Popeye

ответ

0

Попробуйте [self.navigationItem.titleView becomeFirstResponder]; вместо [titleTextField becomeFirstResponder];

+0

Пробовал это тоже .. Но не повезло :-( –

0

Вы также должны соответствовать протоколу UITextFieldDelegate. Я думаю, что вы не соответствуете протоколу.

в .h файле (например)

@interface RootViewController : UITableViewController<UITextFieldDelegate> 

@end 
+0

Да .. Уже сделали это .. Conformed UITextFieldDelegate в моем .h файле '@interface ShowListViewController: UIViewController { // code} @ end' Но все равно это не сработало. –

+0

@BharathiJayakumar: выше работает для меня !!! – Maulik

+0

Отличный .. Можете ли вы поделиться своим исходным кодом здесь? Возможно, я что-то делаю что-то неправильно. –

0

Попробуйте это:

[titleTextField becomeFirstResponder]; 

затем:

self.navigationItem.titleView = titleTextField; 

скажите мне, если какой-либо удачи ...

+0

Похоже, navigationItem.titleView не будет добавлен в иерархию представлений .. Поэтому он не будет отвечать на UIResponderClass ... Поправьте меня, если я неправильно... –

Смежные вопросы