【问题标题】:backgroundTouched not working in uitableviewcontroller iphonebackgroundTouched 在 uitableviewcontroller iphone 中不起作用
【发布时间】:2012-04-08 06:59:41
【问题描述】:

我的代码:

.h:

- (IBAction)backgroundTouched:(id)sender;

.m

- (IBAction)backgroundTouched:(id)sender {
    [textField resignFirstResponder];
    [self.view endEditing:YES];

    NSLog(@"backgound taped");
}

我不知道为什么当我点击背景并且键盘没有隐藏时没有调用 backgroundTouched。我认为由于接线代码问题而从未调用过。 textField resignFirstResponder 和 self.view endEditing:YES 和 NSLog 都不起作用。 谁能让我知道该怎么做?或者我在这里错过了什么? 我在 uitextfield 中完成写入后试图隐藏键盘,文本字段在 uitableview 单元格内。

P.S 我在没有 xib 文件的 uitableviewcontroller 中制作了它

谢谢。

【问题讨论】:

    标签: iphone objective-c keyboard uitextfield


    【解决方案1】:

    考虑使用UITextField 的委托方法,即textFieldDidEndEditing:(我已经为您链接了Apple 的文档),而不是backgroundTouched 方法(我不知道它是如何实际调用的)。

    【讨论】:

    • 我认为 textFieldDidEndEditing 在文本字段退出其第一响应者后被调用。我的问题是如果不使用 backgroundTouched,我不知道在哪里辞职。或者只是我不知道如何告诉应用程序我用键盘完成了。请指教。
    • 如果textFieldDidEndEditing 被调用,这意味着用户输入了“完成”按钮(或“开始”按钮或“搜索”按钮或完成文本字段的任何内容),或者用户在文本字段之外触摸。在任何情况下,textFieldDidEndEditing 都会被调用,这就是你应该调用你的resignFirstResponder 来告诉键盘消失的地方。
    • 我把 UITextFieldDelegate 放在界面上,把 - (void) textFieldDidEndEditing:(UITextField *)textField 放在调用 [textField resignFirstResponder] 的实现上,然后把 textField.delegate = self;在 viewDidLoad 上。键盘仍然在 uitextfield 或完成按钮之外点击。我在这里错过了什么?
    • 您可能没有在正确的时间设置委托。如果文本字段是表格视图单元格的一部分,请在您的 cellForRowAtIndexPath: 方法中设置它。
    • 我只放了 [cell addSubview:textField];在 cellForRowAtIndexPath 中,init 和我放入 viewDidLoad 的任何其他设置器。无论如何,我使用 "- (BOOL)textFieldShouldReturn:(UITextField *)textField" 而不是 textFieldDidEndEditing,它可以在按下完成按钮的情况下工作,但不能在文本字段外的任何地方按下。由于我使用 UIKeyboardTypeNumberPad 完成按钮不存在,所以我真的需要点击任何地方来告诉键盘必须消失。我不知道为什么 textFieldDidEndEditing 和(我试过) textFieldShouldEndEditing 都不起作用。有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多