【问题标题】:How to make the keyboard go away in the iphone simulator如何在iphone模拟器中让键盘消失
【发布时间】:2010-10-23 19:41:16
【问题描述】:

我的 iphone 应用程序中有一个文本输入框,当您在模拟器中触摸它时,键盘会弹出。但是没有办法摆脱它。 其他网页给出了解决方案,但没有解释为什么它们应该起作用,而且它们对我不起作用。 有人说让文本框的委托你的 uiview 然后在对象上调用 resignfirstresponder ,但它永远不会被调用。 有什么建议?任何人都可以解释实际发生的事情吗?如果我知道设计范式是什么,我可以自己弄清楚......

也许我应该放一个“开始”按钮,这样我就可以将焦点从文本字段中移开?

【问题讨论】:

    标签: iphone keyboard simulator


    【解决方案1】:

    - (BOOL)textFieldShouldReturn:(UITextField *)textField 在按下返回按钮时被调用。

    您想调用[textField resignFirstResponder],然后返回YES。这应该够了吧。还要确保设置了委托。如有疑问,请添加断点或NSLog 并验证。

    【讨论】:

      【解决方案2】:

      一种方法是将对象设置为文本字段的委托并实现

      - (BOOL)textFieldShouldReturn:(UITextField *)textField
      

      你打电话给[textField resignFirstResponder]

      这将导致键盘在他们按下返回/开始/完成按钮时消失(无论您将右下键盘键设置为什么)。

      有关更多信息,请参阅 UITextFieldDelegate 参考。

      【讨论】:

      • 刚开始的时候,我发现the "Your First iOS Application" tutorial 很有帮助。有关此答案的更多信息,请参阅"Implementing the View Controller" 中的“文本字段的代表”小节。
      • 很简单,但为什么这不是默认行为?这虽然可行.. 实现上述接口,并将 IB 中的“委托”连接连接到文件所有者。
      • 我是否将 [textField resignFirstResponder] 替换为我的文本字段的名称,例如 [myTextField resignFirstResponder],我无法让它在 xcode 4.2 上以任何方式工作。
      • 这不是默认设置,我有点恼火。
      【解决方案3】:

      要关闭键盘,您可以使用 TextField Delegate。

      要使用它,请按以下步骤操作...
      1. 在您的 viewController.h 中添加委托声明,如下所示:

      @interface ViewController : UIViewController <strong>&lt;UITextFieldDelegate&gt; {
          }
      2. 在你的 viewController.m 中调用这个方法:
      - (BOOL)textFieldShouldReturn:(UITextField *)textField
      3.然后编写如下代码:
      - (BOOL)textFieldShouldReturn:(UITextField *)textField {
          [textField resignFirstResponder];
          return YES;
          }
      4. 最后一步是设置 textField 的委托:
      - (void)viewDidLoad {
              [super viewDidLoad];
              self.textField.delegate = self;
          }

      【讨论】:

      • 是的,它应该...无论如何,如果您只想在某些文本字段上应用委托,请在 textFieldShouldReturn: 方法更改 [textField resignFirstResponder];与 [yourTextField resignFirstResponder];
      • 无法正常工作,做了所有事情,甚至在 ViewController 中的 initWithNibName 中添加了 myTextField.delegate = self,但从未调用过委托
      【解决方案4】:

      您只需键入以下内容:

      textfield.endEditing(true)
      

      其中textfield 是您的UITextField 的名称。

      【讨论】:

      • 所以我想指出我在 11 年前解决了这个问题是愚蠢的? :-)
      猜你喜欢
      • 1970-01-01
      • 2011-03-05
      • 2015-02-04
      • 2012-01-21
      • 2011-04-26
      • 1970-01-01
      • 2012-05-01
      • 1970-01-01
      相关资源
      最近更新 更多