[UITextInputTraits length]:无法识别的选择器

时间:2011-12-17 15:03:04

标签: ios exception uinavigationcontroller

今天最奇怪的错误:

2011-12-17 08:52:50.565 ShowLink[625:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITextInputTraits length]: unrecognized selector sent to instance 0x2aa240'
*** First throw call stack:
(0x37eb68bf 0x3199c1e5 0x37eb9acb 0x37eb8945 0x37e13680 0x352e4d9b 0x352aa0fd 0x352ac24d 0x352aa8e5 0x352aa259 0x352aa1b3 0x352aa12f 0x3539a623 0x352ad503 0x352acef5 0x352a76ff 0x352a7349 0x3d29 0x37e10435 0x352899eb 0x352899a7 0x35289985 0x352896f5 0x3528a02d 0x3528850f 0x35287f01 0x3526e4ed 0x3526dd2d 0x3798bdf3 0x37e8a553 0x37e8a4f5 0x37e89343 0x37e0c4dd 0x37e0c3a5 0x3798afcd 0x3529c743 0x211d 0x20dc)
terminate called throwing an exception(gdb) 

标准导航控制器应用程序,我发誓,没有打电话或与UITextInputTraits有任何关系。当我在堆栈上推送一个新控制器时会发生这种情况。

为了进行测试,我将控制器击败了它的骨架,但仍然在推送后得到错误(被调用的控制器viewDidLoad和viewWillAppear被调用,这似乎发生在较低级别)

2 个答案:

答案 0 :(得分:5)

您有机会声明名为UITextField * title的属性 如果你命名你的文本字段对象*标题它是你问题的根源:D 更改您的变量名称不要使用“TITLE”

答案 1 :(得分:0)

就像我在评论中发布的那样,您应该enable an exception breakpoint查看发生异常的确切代码行。

您可能尚未创建UITextInputTraits,但我猜您在代码中的某个位置创建了UITextFieldUITextField符合UITextInput - 协议符合UIKeyInput协议,该协议符合UITextInputTraits协议。

我可以在错误消息中看到您要调用符合length协议的UITextInputTraits - 属性。在某些代码点,您认为手中有NSString,而不是NSString。猜猜:你的代码中是否存在这种类型的行:[myTextField length]?如果是这样,您应将其更改为[myTextField.text length]