【问题标题】:How Can I Hide The Keyboard iPhone App如何隐藏键盘 iPhone 应用程序
【发布时间】:2011-07-08 18:38:34
【问题描述】:

如何在用户按下“完成”或点击 UITextField 后隐藏键盘?

我已将此代码放入 AppDelegate 中:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return NO;
}

我已将 IB 中的 UITextField 委托链接到文件的所有者..

我做错了什么?

EDIT: Changin return NO -> return YES 什么都不做。我打开了 IB 并单击文件的所有者-> 连接选项卡,有多个引用出口都指向 UITextfields。它仍然不工作..

更新:

我将此添加到我的函数中:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    int i = 5;
    NSLog(@"%d", i);
    return YES;
}

在将焦点设置到文本字段后按回车键时,控制台没有打印任何内容...所以它没有调用该函数。我是否错误地连接了某些东西?我也将返回键用作“完成”,不确定这是否有影响?

更新:

我的 AppDelegate 中有我的 testfieldShouldReturn 函数,而不是我的视图控制器。我的错误....感谢您的帮助

【问题讨论】:

  • 你的视图控制器是否采用UITextFieldDelegate协议?
  • 检查谁是文件的所有者。你有 nib 的视图控制器吗?如果是这样,请将textFieldShouldReturn: 放入视图控制器。
  • @dasdom,谢谢。你解决了我的问题
  • 请检查 CharlieMezak 的答案作为正确答案,因为他也指出了这一点。

标签: iphone objective-c xcode ios4


【解决方案1】:

您的代码看起来不错。你能确保你的委托连接设置正确吗?尝试将 NSLog 添加到委托方法以查看它是否被调用。

...

您的问题更新表明这绝对是一个连接问题。尝试 Vince 的建议并在代码中明确设置委托。您可能希望在视图控制器的 viewDidLoad 方法中执行此操作,以确保在设置其委托之前已实际加载 textField。回复是否有效。

【讨论】:

  • 你能尝试明确设置 textview 的委托吗?如果不查看您的 xib 文件,很难看出发生了什么问题,但如果您设置了委托 ein 代码,那么我们可以确定它会发生。
【解决方案2】:

只需将您的应用代理设置为您的 UITextField 的代理。

[textField setDelegate:self];

在您的应用委托的-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; 方法中设置它。

【讨论】:

  • 所以这的问题。文本字段的委托未正确设置。文斯接手代表,而我们其他人则在争吵。 :P
  • @CharlieMezak:你是对的。我真的很喜欢你在 dasdom 上回答的两个 cmets。所以我也对他们两个都投了赞成票,因为你指出了一些完全正确的事情。
【解决方案3】:

因为您希望文本字段返回。你应该return YES; 而不是NO

【讨论】:

  • 与下面 dasdom 的回答相同的 cmets
【解决方案4】:

在您的 .h 中

-(IBAction)hideKeyboard:(id)sender;

在您的 .m 或 .mm 中

-(IBAction)hideKeyboard:(id)sender {
    [(UITextField*)sender resignFirstResponder];
}

然后只需在界面构建器中将它们链接到您的文本字段的“退出时结束”事件。

【讨论】:

    【解决方案5】:

    return NO; 替换为return YES;

    这适用于我的代码。

    编辑:我错了。返回值不是这里的问题。当您拨打resignFirstResponder 时,键盘应该隐藏起来。

    【讨论】:

    • 我看不出函数的返回值在这里应该有什么不同。不管是什么,该方法已经告诉文本字段让第一响应者辞职。无论如何,返回 yes 意味着文本字段将在其内容的末尾输入一个回车符,这不是 OP 想要的。
    • 来自 textFieldShouldReturn 的返回值的文档:如果文本字段应该实现其返回按钮的默认行为;否则,否。 返回键的默认行为是打印回车,当您从此方法返回 YES 时会发生这种情况。对吗?
    • 按照 CharlieMezak 的建议,在委托方法中添加一个 NSLog 以查看它是否真正被调用。
    • @CharlieMezak: ... 应该实现 ITS 默认行为 ... UITextField 的默认行为是什么?否则文档对textFieldShouldReturn 说:Asks the delegate if the text field should process the pressing of the return button.
    • @dasdom。由于 textField 是一个文本编辑视图,因此在编辑文本 ===> 以打印返回字符时,返回键的默认行为将是任何其他键盘的返回键的默认行为!当您想在点击返回键时关闭键盘时,就是您不希望 textview 处理按下返回按钮的时候。您自己处理它,通常使用像 [textfield resignFirstResponder] 这样的方法调用。这就是我阅读文档的方式。
    【解决方案6】:

    希望这个视频教程对你有所帮助..

    http://www.thenewboston.com/?p=1368&pOpen=tutorial

    在返回键上调用 textFieldShouldReturn 函数 按此操作:

    1) 右键单击​​弹出键盘的文本字段。 2)选择第一个选项“退出时结束”。 3)将蓝线拖到文件所有者处,您将可以选择“hideKeyboard”功能选项

    你就完成了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-28
      • 2011-12-30
      • 1970-01-01
      • 2014-04-10
      相关资源
      最近更新 更多