Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift 5自定义文本字段代理不工作_Ios_Swift_Delegates_Textfield - Fatal编程技术网

Ios Swift 5自定义文本字段代理不工作

Ios Swift 5自定义文本字段代理不工作,ios,swift,delegates,textfield,Ios,Swift,Delegates,Textfield,自从我将我的Xcode和项目更新为Swift 5之后, 我对特定的文本字段有一个不可思议的问题。 这些文本字段有一个自定义类,允许对滑动操作进行响应。它们对标准触摸也有特殊的反应。触摸文本字段时,TextField ShouldBeginediting功能将抑制键盘上升,并启动自定义拉出值选择菜单。 在更新之前,一切都很正常,每当我启动我的Xcode(一两天后)并加载我的应用程序时,这些字段的textFieldShouldBeginEditing永远不会被调用 解决这些问题的方法是(以重复的方式

自从我将我的Xcode和项目更新为Swift 5之后, 我对特定的文本字段有一个不可思议的问题。 这些文本字段有一个自定义类,允许对滑动操作进行响应。它们对标准触摸也有特殊的反应。触摸文本字段时,TextField ShouldBeginediting功能将抑制键盘上升,并启动自定义拉出值选择菜单。 在更新之前,一切都很正常,每当我启动我的Xcode(一两天后)并加载我的应用程序时,这些字段的textFieldShouldBeginEditing永远不会被调用

解决这些问题的方法是(以重复的方式)对每个具有这些自定义文本字段之一的视图控制器进行处理,并对页面进行单笔划编辑。 然后,当我重新加载时,该特定视图上的文本字段再次正常

但在我重新加载应用程序几天后,问题再次出现。 我似乎无法通过关闭Xcode甚至我的电脑来复制这个问题。似乎它必须被关闭一段随机的时间或什么的。 …我不知道这是什么原因

另一点是,自定义选择窗格的IBOutlets位于所有这些视图控制器的父类上。 将所有父代码分发到所有子视图控制器需要大量的编写工作

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
    var boolVal = true
    switch textField.tag {
    case 11: boolVal = false; launchSelection(textField)
    case 12: boolVal = false; launchSelection(textField)
    default: boolVal = true; shutThatStupidSideBar()
    }
    textFieldTag = textField.tag
    return boolVal
}
func launchSelection(_ tf:UITextField) {
    selectionPane.textfield = tf
    switch tf.tag {
    case 11: selectionPane.tableData = lm.retreiveList("provider")                                //11 = Owner
    case 12: selectionPane.tableData = lm.retreiveList("\(currentSettings.defUnitsStrand)GaugeStrand") //12 = Strand Gauge
    default: break
    }
    toggleSideBar()
}
  • 选中脚本中的
    UITextField
    委托给
    UIViewController
  • 向viewController代码添加
    UITextFieldDelegate
    ,如下所示:

    class ViewController:UIViewController、UIExtFieldDelegate

  • 使用以下示例代码:

    func textField应该开始编辑(\utextfield:UITextField)->Bool{
    打印(“测试”)
    返回真值
    }
    
  • 选中脚本中的
    UITextField
    委托给
    UIViewController
  • 向viewController代码添加
    UITextFieldDelegate
    ,如下所示:

    class ViewController:UIViewController、UIExtFieldDelegate

  • 使用以下示例代码:

    func textField应该开始编辑(\utextfield:UITextField)->Bool{
    打印(“测试”)
    返回真值
    }
    

  • 一切都包括在内。我做了很多测试——当问题发生时,逐行检查。“textfield shouldbeginediting”中没有任何内容运行。它的旁路;我想,就像许多其他文本字段函数一样。但所有的委托代码都已准备就绪。记住。只有在几天后第一次加载应用程序时才会发生这种情况。当我以任何方式编辑视图控制器页面时(例如,仅添加一个空间),该页面的问题再次消失!一切都包括在内。我做了很多测试——当问题发生时,逐行检查。“textfield shouldbeginediting”中没有任何内容运行。它的旁路;我想,就像许多其他文本字段函数一样。但所有的委托代码都已准备就绪。记住。只有在几天后第一次加载应用程序时才会发生这种情况。当我以任何方式编辑视图控制器页面时(例如,仅添加一个空间),该页面的问题再次消失!