触摸时 UITextField 崩溃

Posted

技术标签:

【中文标题】触摸时 UITextField 崩溃【英文标题】:UITextField crash on touch 【发布时间】:2015-08-04 02:45:40 【问题描述】:

每当我点击我以编程方式添加到视图中的UITextField 时,我的应用程序就会不断崩溃。如果有任何帮助,这里是堆栈跟踪:

'NSInvalidArgumentException',原因:'-[Clifford_Bradford.OtherVehiclesViewController numOfOtherVehiclesUpdated:]:无法识别的选择器发送到实例 0x7fd92a57f8d0' *** 首先抛出调用堆栈: ( 0 核心基础 0x0000000107e5dc65 __exceptionPreprocess + 165 1 libobjc.A.dylib 0x00000001099c8bb7 objc_exception_throw + 45 2核心基础0x0000000107e650ad-[NSObject(NSObject)不识别选择器:]+205 3 核心基础 0x0000000107dbb13c ___forwarding___ + 988 4 核心基础 0x0000000107dbacd8 _CF_forwarding_prep_0 + 120 5 UIKit 0x00000001086fdd62-[UIApplication sendAction:to:from:forEvent:] + 75 6 UIKit 0x000000010880f50a-[UIControl_sendActionsForEvents:withEvent:] + 467 7 UIKit 0x0000000108e26d39-[UITextField_resignFirstResponder] + 256 8 UIKit 0x0000000108e26bab-[UITextField_finishResignFirstResponder] + 45 9 UIKit 0x000000010888078b-[UIResponder resignFirstResponder] + 114 10 UIKit 0x0000000108e26b04-[UITextField resignFirstResponder] + 114 11 UIKit 0x0000000108880575 -[UIResponder 成为FirstResponder] + 284 12 UIKit 0x000000010876fb81 -[UIView(Hierarchy) 成为FirstResponder] + 99 13 UIKit 0x0000000108e26307 -[UITextField 成为FirstResponder] + 51 14 UIKit 0x0000000108ab5d4e-[UITextInteractionAssistant(UITextInteractionAssistant_Internal)setFirstResponderIfNecessary] + 177 15 UIKit 0x0000000108ab7dc0-[UITextInteractionAssistant(UITextInteractionAssistant_Internal) oneFingerTap:] + 2263 16 UIKit 0x0000000108aad656 _UIGestureRecognizerSendActions + 262 17 UIKit 0x0000000108aac2f9-[UIGestureRecognizer _updateGestureWithEvent:buttonEvent:] + 532 18 UIKit 0x0000000108ab0f16 ___UIGestureRecognizerUpdate_block_invoke662 + 51 19 UIKit 0x0000000108ab0e12 _UIGestureRecognizerRemoveObjectsFromArrayAndApplyBlocks + 254 20 UIKit 0x0000000108aa6e8d _UIGestureRecognizerUpdate + 2796 21 UIKit 0x000000010874a646-[UIWindow_sendGesturesForEvent:] + 1041 22 UIKit 0x000000010874b272-[UIWindow 发送事件:] + 666 23 UIKit 0x0000000108711541-[UIApplication sendEvent:] + 246 24 UIKit 0x000000010871ecdc _UIApplicationHandleEventFromQueueEvent + 18265 25 UIKit 0x00000001086f959c _UIApplicationHandleEventQueue + 2066 26 核心基础 0x0000000107d91431 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 27 核心基础 0x0000000107d872fd __CFRunLoopDoSources0 + 269 28 核心基础 0x0000000107d86934 __CFRunLoopRun + 868 29 核心基础 0x0000000107d86366 CFRunLoopRunSpecific + 470 30 图形服务 0x000000010be31a3e GSEventRunModal + 161 31 UIKit 0x00000001086fc8c0 UIApplicationMain + 1282 32 克利福德布拉德福德 0x0000000107c33bb7 主要 + 135 33 libdyld.dylib 0x000000010a0fe145 开始 + 1 ) libc++abi.dylib:以 NSException` 类型的未捕获异常终止。

它只是将我指向AppDelegate.swift 的第一行,这对我没有帮助。这是将textField 添加到视图的相应代码。我想补充一点,contViewscrollView 内。

        var otherVehiclePlateNum:UITextField = UITextField(frame: CGRectMake(carLabel.bounds.origin.x + 15, carLabel.frame.maxY + 10, self.contView.frame.width - 30, 25))
        otherVehiclePlateNum.placeholder = "TEST"
        self.contView.addSubview(otherVehiclePlateNum)

非常感谢您的帮助,我一直坚持这一点。

【问题讨论】:

您是否设置了一些事件处理程序来使用名为numOfOtherVehiclesUpdated: 的方法?您要么没有实际实现该方法(使用正确数量的参数),要么将它放在错误的类中。 是的,这是正确的,它是从我的 Storyboard 中连接到我的 ViewController 的。无论如何,只是在情节提要中将其删除,一切都很好。谢谢! How can I debug 'unrecognized selector sent to instance' error的可能重复 【参考方案1】:

看第一行:方法numOfOtherVehiclesUpdated:真的存在于OtherVehiclesViewController类中吗?确保如果您调用任何@selectors,冒号与签名匹配(即,您可能有一个numOfOtherVehiclesUpdated 方法,它与带有参数的numOfOtherVehiclesUpdated: 不同)。

先看看那里 - 你可能会不小心调用它

【讨论】:

天哪,我不敢相信我忽略了这一点。就是这样。我之前在测试某些东西时使用过它。无论出于何种原因,它都与我的 Storyboard 中的 ViewController 中的某些东西相关联,而它所要做的就是在连接检查器中删除它。这是我第一次制作应用程序,所以进展缓慢。无论如何,谢谢卡梅伦 很高兴它就是这么简单......它不时发生在我们所有人身上。 :)

以上是关于触摸时 UITextField 崩溃的主要内容,如果未能解决你的问题,请参考以下文章

UITextField右对齐iOS 7

触摸 UITextField 时设置 UIPickerView 的默认值

iOS - 在 UITextField 之外触摸时关闭键盘

UITextField 添加到 UIView 时不响应触摸事件

UIImageView 的 UITextField 子视图没有响应触摸事件

UITextField 是不是消耗触摸事件?