【问题标题】:UINavigationItem.titleView canBecomeFirstResponder?UINavigationItem.titleView 能否成为FirstResponder?
【发布时间】: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])

标签: iphone ios uinavigationitem titleview


【解决方案1】:

尝试[self.navigationItem.titleView becomeFirstResponder]; 而不是[titleTextField becomeFirstResponder];

【讨论】:

  • 也试过这个.. 但没有运气:-(
【解决方案2】:

您还需要遵守UITextFieldDelegate 协议。我认为你没有遵守协议。

在.h文件中(例如)

@interface RootViewController : UITableViewController<UITextFieldDelegate>

@end

【讨论】:

  • 是的.. 也已经这样做了.. 在我的 .h 文件中符合 UITextFieldDelegate @interface ShowListViewController : UIViewController &lt;UITextFieldDelegate,UITextViewDelegate&gt;{ //code } @end 但它仍然没有工作..
  • 太棒了..你能在这里分享你的源代码吗?那我可能在某个地方做错了什么..
【解决方案3】:

试试这个:

[titleTextField becomeFirstResponder];

然后:

self.navigationItem.titleView = titleTextField;

如果运气好的话告诉我...

【讨论】:

  • 看起来,navigationItem.titleView 不会被添加到视图层次结构中。所以它不会响应 UIResponderClass...如果我错了,请纠正我...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-06
  • 2011-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多