2016-12-29 4 views
1

Во-первых, я ограничиваю входные символы, включаю только число и альфу. Когда контроллер поворачивается в альбомный, я ввожу специальный символ, например '*'. После этого я нажимаю кнопку в красной рамке, App Crash!iOS UITextFiled Crash When Landscape

enter image description here

Exception Type: EXC_CRASH (SIGABRT) 
Exception Codes: 0x0000000000000000, 0x0000000000000000 
Exception Note: EXC_CORPSE_NOTIFY 
Triggered by Thread: 0 

Last Exception Backtrace: 
0 CoreFoundation     0x181c5a1c0 __exceptionPreprocess + 124 (NSException.m:165) 
1 libobjc.A.dylib     0x18069455c objc_exception_throw + 56 (objc-exception.mm:521) 
2 CoreFoundation     0x181c61278 -[NSObject(NSObject) doesNotRecognizeSelector:] + 140 (NSObject.m:328) 
3 CoreFoundation     0x181c5e278 ___forwarding___ + 916 (NSForwarding.m:3120) 
4 CoreFoundation     0x181b5859c _CF_forwarding_prep_0 + 92 
5 UIKit       0x187bd0248 -[UIKeyboardImpl shouldShowCandidateBar] + 164 (UIKeyboardImpl.m:4261) 
6 UIKit       0x187ae0194 -[UIKeyboardImpl updateTextCandidateView] + 508 (UIKeyboardImpl.m:8597) 
7 UIKit       0x187adf498 -[UIKeyboardImpl clearInput] + 156 (UIKeyboardImpl.m:7663) 
8 UIKit       0x187af6028 -[UIKeyboardImpl updateForChangedSelectionWithExecutionContext:] + 280 (UIKeyboardImpl.m:4782) 
9 UIKit       0x187adf26c -[UIKeyboardTaskQueue continueExecutionOnMainThread] + 384 (UIKeyboardTaskQueue.m:290) 
10 UIKit       0x188531c74 -[UIKeyboardTaskQueue addAndReturnTask:] + 132 (UIKeyboardTaskQueue.m:410) 
11 UIKit       0x188531ee4 -[UIKeyboardTaskQueue performSingleTask:] + 248 (UIKeyboardTaskQueue.m:484) 
12 UIKit       0x187c67120 -[UIKeyboardImpl updateForChangedSelection] + 92 (UIKeyboardImpl.m:4753) 
13 UIKit       0x187af495c -[UIKeyboardImpl selectionDidChange:] + 112 (UIKeyboardImpl.m:4867) 
14 UIKit       0x187af4404 __52-[UITextInputController _coordinateSelectionChange:]_block_invoke + 152 (UITextInputController.m:653) 
15 UIFoundation     0x187a2fd74 -[NSTextStorage coordinateReading:] + 56 (NSTextStorage.m:383) 
16 UIKit       0x187af4338 -[UITextInputController _coordinateSelectionChange:] + 156 (UITextInputController.m:639) 
17 UIKit       0x187cea998 -[UITextInputController selectAll] + 80 (UITextInputController.m:2774) 
18 UIKit       0x187cea89c -[UITextInputController clearText] + 48 (UITextInputController.m:2331) 
19 UIKit       0x187cea740 -[UITextField _clearButtonClicked:] + 376 (UITextField.m:5734) 
20 UIKit       0x187aea484 -[UIApplication sendAction:to:from:forEvent:] + 96 (UIApplication.m:4582) 
21 UIKit       0x187aea404 -[UIControl sendAction:to:forEvent:] + 80 (UIControl.m:609) 
22 UIKit       0x187ad48b8 -[UIControl _sendActionsForEvents:withEvent:] + 452 (UIControl.m:694) 
23 UIKit       0x187ae9cf0 -[UIControl touchesEnded:withEvent:] + 584 (UIControl.m:446) 
24 UIKit       0x187ae9818 -[UIWindow _sendTouchesForEvent:] + 2484 (UIWindow.m:2120) 
25 UIKit       0x187ae4a60 -[UIWindow sendEvent:] + 2988 (UIWindow.m:2290) 
26 UIKit       0x187ab552c -[UIApplication sendEvent:] + 340 (UIApplication.m:10719) 
27 UIKit       0x1882a2a54 __dispatchPreprocessedEventFromEventQueue + 2736 (UIEventDispatcher.m:1426) 
28 UIKit       0x18829c4bc __handleEventQueue + 784 (UIEventDispatcher.m:1622) 
29 CoreFoundation     0x181c08278 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24 (CFRunLoop.c:1943) 
30 CoreFoundation     0x181c07bc0 __CFRunLoopDoSources0 + 524 (CFRunLoop.c:1989) 
31 CoreFoundation     0x181c057c0 __CFRunLoopRun + 804 (CFRunLoop.c:2821) 
32 CoreFoundation     0x181b34048 CFRunLoopRunSpecific + 444 (CFRunLoop.c:3113) 
33 GraphicsServices    0x1835ba198 GSEventRunModal + 180 (GSEvent.c:2245) 
34 UIKit       0x187b202fc -[UIApplication _run] + 684 (UIApplication.m:2649) 
35 UIKit       0x187b1b034 UIApplicationMain + 208 (UIApplication.m:4091) 
36 LCIphoneAdhocIP     0x1002e5acc main + 88 (main.m:17) 
37 libdyld.dylib     0x180b185b8 start + 4 
+0

вы можете включить зомби так укажет, где он на самом деле происходит сбой. – Joshua

ответ

0

CoreFoundation 0x181c61278 - [NSObject (NSObject) doesNotRecognizeSelector:] + 140 (NSObject.m: 328)

Ваш дает некоторые "*" в TextField который возвращается, когда вы нажимаете Return Key, не является ни числом, ни альфой.

Так что он не может распознать @selector. Поэтому измените свой тип клавиатуры, как пользователь, не сможет вводить такие неправильные символы.

Я предпочитаю

[textField1.keyboardType = UIKeyboardTypeAlphabet]; 
+0

Я использовал тип UIKeyboardTypeAlphabet. – tomatobin

+0

Просто используйте делегат для ограничения ввода – tomatobin

+0

- (BOOL) textField: (UITextField *) textField shouldChangeCharactersInRange: (NSRange) range replacementString: (NSString *) string – tomatobin