【问题标题】:iOS 9 (Swift 2) - resignFirstResponder() throws an erroriOS 9 (Swift 2) - resignFirstResponder() 抛出错误
【发布时间】:2016-03-13 02:48:20
【问题描述】:

我有一个自定义视图,它显示从 UITextField 输入的单词列表。

为了方便快捷地输入,我打算在按下返回键后不隐藏键盘,而是重置文本字段并让用户继续输入更多单词。当用户完成输入单词时,我需要隐藏键盘,这意味着当用户在文本字段外点击时。

但是当在文本字段外点击时,以下实现给了我未捕获的异常。

我想知道与 resignFirstResponder() 相关的空字符串检查是否会导致此问题,但我需要确定该字段是否包含一些值。

我认为self.endEditing(true) 与我的情况无关,因为除非在文本字段外点击,否则无法知道用户何时想要结束编辑。

override func viewDidLoad() {

    super.viewDidLoad()

    textField.delegate = self
    textField.returnKeyType = UIReturnKeyType.Done

}

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    textField.resignFirstResponder()
}

func textFieldShouldReturn(textField: UITextField) -> Bool {

    if let text = textField.text {
        addTextToList()
    }
    textField.text = ""

    return true
}

未捕获的异常是

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[CookMate.CreateRecipeVC ingredientTextFieldDidChange:]: unrecognized selector sent to instance 0x7f80f1de3370'

【问题讨论】:

  • 有什么异常?
  • 对不起..我忘了添加。 *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[CookMate.CreateRecipeVC ingredientsTextFieldDidChange:]:无法识别的选择器发送到实例 0x7f80f1de3370”
  • 错误中的ingredientTextFieldDidChange: 是什么?
  • 我没有实现那个事件。不过我之前确实玩过。

标签: ios swift


【解决方案1】:

您是否通过 Storyboard 建立了一个出口,后来又删除了名为 ingredientTextFieldDidChange 的出口?右键单击 Storyboard 中的 textField 以查看是否存在,然后按 x 将其删除。

【讨论】:

  • 你是对的。我之前确实参加过该赛事,但它仍然与该领域相关联。我已经删除了它,它现在工作正常。谢谢。
  • 不客气。每当抛出这种错误时,这是​​要检查的事情之一(直到今天仍然困扰着我)。
【解决方案2】:

你可以使用这个方法每次都对我有用

UIApplication.sharedApplication().sendAction("resignFirstResponder", to:nil, from:nil, forEvent:nil)

您可能会发现它很有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 2015-12-30
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多