UINavigationItem.titleView 能否成为FirstResponder?
Posted
技术标签:
【中文标题】UINavigationItem.titleView 能否成为FirstResponder?【英文标题】:UINavigationItem.titleView canBecomeFirstResponder? 【发布时间】:2012-06-12 12:42:47 【问题描述】:我有一个自定义 UITextField 添加到 UINavigationItem.titleView。但它不是成为FirstResponder。为什么会这样?
- (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]
请指教。
提前致谢, 婆罗洲。
【问题讨论】:
您的代码看起来不错...您是否尝试在viewWillAppear
中编写上述代码?
@Maulik 是的.. 但它没有用!
快速做一个 if..statement 看看它是否能成为FirstResponder。比如 if([titleTextField becomeFirstResponder])
【参考方案1】:
尝试[self.navigationItem.titleView becomeFirstResponder];
而不是[titleTextField becomeFirstResponder];
【讨论】:
也试过这个.. 但没有运气:-(【参考方案2】:您还需要遵守UITextFieldDelegate
协议。我认为你没有遵守协议。
在.h文件中(例如)
@interface RootViewController : UITableViewController<UITextFieldDelegate>
@end
【讨论】:
是的.. 也已经这样做了.. 在我的 .h 文件中符合 UITextFieldDelegate@interface ShowListViewController : UIViewController <UITextFieldDelegate,UITextViewDelegate> //code @end
但它仍然没有工作..
太棒了..你能在这里分享你的源代码吗?那我可能在某个地方做错了什么..【参考方案3】:
试试这个:
[titleTextField becomeFirstResponder];
然后:
self.navigationItem.titleView = titleTextField;
如果运气好的话告诉我...
【讨论】:
看起来,navigationItem.titleView 不会被添加到视图层次结构中。所以它不会响应 UIResponderClass...如果我错了,请纠正我...以上是关于UINavigationItem.titleView 能否成为FirstResponder?的主要内容,如果未能解决你的问题,请参考以下文章