触摸时 UITextField 崩溃 Posted 2023-02-23
技术标签:
【中文标题】触摸时 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
添加到视图的相应代码。我想补充一点,contView
在scrollView
内。
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
类中吗?确保如果您调用任何@selector
s,冒号与签名匹配(即,您可能有一个numOfOtherVehiclesUpdated
方法,它与带有参数的numOfOtherVehiclesUpdated:
不同)。
先看看那里 - 你可能会不小心调用它
【讨论】:
天哪,我不敢相信我忽略了这一点。就是这样。我之前在测试某些东西时使用过它。无论出于何种原因,它都与我的 Storyboard 中的 ViewController 中的某些东西相关联,而它所要做的就是在连接检查器中删除它。这是我第一次制作应用程序,所以进展缓慢。无论如何,谢谢卡梅伦
很高兴它就是这么简单......它不时发生在我们所有人身上。 :) 以上是关于触摸时 UITextField 崩溃的主要内容,如果未能解决你的问题,请参考以下文章
UITextField右对齐iOS 7
触摸 UITextField 时设置 UIPickerView 的默认值
iOS - 在 UITextField 之外触摸时关闭键盘
UITextField 添加到 UIView 时不响应触摸事件
UIImageView 的 UITextField 子视图没有响应触摸事件
UITextField 是不是消耗触摸事件?