9

我在一个项目中有这个类/故事板场景,直到昨晚我在过去的 4 周里工作得很好。

我已经设法注释掉几乎所有内容,但在点击 UITextField 并输入数字时仍然会崩溃。只有当我输入一个值时它才会崩溃,否则它不会崩溃。

这是我现在正在运行的课程:

import Foundation
import UIKit
import HealthKit
import CoreData

class WorkoutViewController: UITableViewController {

//Properties
    @IBOutlet var numberOfLapsTextField: UITextField?
    @IBOutlet var metersPerLapTextField: UITextField?
    @IBOutlet var workoutDurationTextField: UITextField?
    @IBOutlet var paceTextField: UITextField?

    var  healthStore:HKHealthStore?

override func viewDidLoad() {
        super.viewDidLoad()
}

最初它的 IBOutlets 为 ! 代替 ?它有一个 CoreData 堆栈属性,tableview 背景的一些模糊背景效果,从 viewDidLoad 上的健康存储中获取用户的体重,一个用于健康存储获取的谓词辅助方法以及一个取消和完成按钮。完成按钮从文本字段中捕获数据,进行一些计算并将数据保存到健康存储和核心数据。但是所有这些都已被注释掉,只留下上面看到的内容。

有一次我确实设法在控制台中获得了一个奇怪的堆栈跟踪(似乎再也无法得到它),内容如下:

[UI物理键盘事件_matchesKeyCommand:]

和其他一些人就在它之前喜欢它。

我被难住了,有什么想法吗?异常断点是其中之一,但它只是将我带到了采用 UIResponder 的 AppDelegate 类声明行。我学习并重建。我不知道还要寻找什么。截屏

我认为它是一个损坏的故事板文件,因为我已经添加和删除了带有文本字段的场景,并且它们的行为都相同。这是我的 storyboard.xml 文件:

http://www.santiapps.com/iOS/Main.storyboard.xml

4

3 回答 3

13

好的,我删除了导航控制器和标签栏控制器并重新添加了它们,问题就消失了!输入数据时不再出现崩溃。这显然是一个损坏的场景,但奇怪的是,突然之间,所有带有 uitextfields 的场景都以同样的方式损坏了。

我想补充一点,高级 SO 用户真的应该在用户投反对票之前花时间与发布问题的用户交谈。或者应该允许用户对问题进行投票,因为有些人草率地得出结论并开始对实际上是有效问题的问题进行投票是不公平的。

于 2014-10-31T13:11:38.813 回答
13

我因同样的神秘NSNull length消息而崩溃。在模拟器中进行测试时,它偶尔会出现在一个屏幕上,通过反复试验,我发现它仅在我按下cmd键时才会发生。

查看我的故事板源,我发现以下内容:

                <keyCommands>
                    <keyCommand/>
                </keyCommands>

我认为这可以让您为使用蓝牙键盘的任何人定义键盘快捷键。但是 - 这是一个空定义,所以似乎按下 cmd 会导致执行失败,因为我没有定义任何有效的快捷方式。

我完全不知道这是怎么发生的,但是如果您使用图形界面生成器 UI 来查看您的 Storyboard,请转到给出问题的视图控制器并单击根视图控制器。在属性检查器下有一个键盘命令部分。我想我一定是在某些时候不小心点击了+按钮。您可以选择第一个“项目”并点击-摆脱它,问题应该消失。

keyCommands或者,直接从 Storyboard 源中删除该部分。

我看到这个问题已被标记为已回答,但我将其包括在内,以防原始答案(和评论)之上的附加信息对其他人有用。

于 2015-08-21T18:56:33.987 回答
2

单击视图控制器并在属性检查器中的键命令下删除“在下面输入操作”条目

于 2016-09-08T01:59:32.743 回答