Мы имеем следующую проблему и это, как я его воспроизвести:IOS App сбой при отображении клавиатуры
У меня есть текстовое поле в RootViewController и в viewDidLoad я:
UITextField *tf = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 200, 200)]; tf.backgroundColor = [UIColor whiteColor]; tf.delegate = self; [self.view addSubview:tf]; [tf becomeFirstResponder];
RootViewController имеет 2 контейнера, один для бокового меню и один для фактического содержимого. это ДЕЙСТВИТЕЛЬНО делегировать UITextFieldDelegate и UITextViewDelegate
- Если запустить приложение текстовое поле ведет себя правильно
После перехода через несколько контроллеров зрения, как это:
[destination.view setFrame:[[UIScreen mainScreen] applicationFrame]]; [self.currentVC willMoveToParentViewController:nil]; [self addChildViewController:destination]; [self transitionFromViewController:self.currentVC toViewController:destination duration:0.25 options:UIViewAnimationOptionTransitionCrossDissolve animations:nil completion:^(BOOL finished){ [self.currentVC removeFromParentViewController]; [destination didMoveToParentViewController:self]; self.currentVC = destination; self.currentSelection = selection; }];
всякий раз, когда я хочу, чтобы отобразить клавиатуру с помощью «Cmd + K» (Simulator) Я получаю EXC_BAD_ACCESS
Опять единственный способ получить сбой - отобразить систему Клавиатура
- Включение Zombies делает его немного лучше, но он заканчивается сбоем (ТОЛЬКО, если я открываю клавиатуру).
- Я попытался таНос Guard но VM работает из памяти, и это не помогает
Я из идей! Вот след:
0 0x00c1d160 in CALayerGetSuperlayer()
1 0x00fae832 in -[UIView(Hierarchy) superview]()
2 0x00fa144a in -[UIView nextResponder]()
3 0x010f39f1 in -[UIResponder(Internal) _responderWindow]()
4 0x00fbbc89 in -[UIView(Internal) _firstResponder]()
5 0x010f25c2 in -[UIResponder isFirstResponder]()
6 0x01748243 in -[UITextView _keyboardDidShow:]()
7 0x0222d079 in __57-[NSNotificationCenter addObserver:selector:name:object:]_block_invoke()
8 0x02dd8be4 in __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__()
9 0x02cc511b in _CFXNotificationPost()
10 0x0221c5d6 in -[NSNotificationCenter postNotificationName:object:userInfo:]()
11 0x016fe4e5 in -[UIInputWindowController postEndNotifications:withInfo:]()
12 0x01705660 in -[UIInputWindowController keyboardHeightChangeDone]()
13 0x0117da40 in -[UIKeyboardImpl _resizeForKeyplaneSize:splitWidthsChanged:]()
14 0x012ebf42 in __66-[UIKeyboardPredictionView setPredictionViewState:animate:notify:]_block_invoke()
15 0x00fb7c06 in +[UIView(UIViewAnimationWithBlocks) _setupAnimationWithDuration:delay:view:options:factory:animations:start:animationStateGenerator:completion:]()
16 0x00fb7fc7 in +[UIView(UIViewAnimationWithBlocks) animateWithDuration:delay:options:animations:completion:]()
17 0x012ebd31 in -[UIKeyboardPredictionView setPredictionViewState:animate:notify:]()
18 0x012eb78a in -[UIKeyboardPredictionView setPredictionViewState:animate:]()
19 0x01193b1a in -[UIKeyboardImpl showKeyboard]()
20 0x01195fb0 in -[UIKeyboardImpl toggleSoftwareKeyboard]()
21 0x01196020 in -[UIKeyboardImpl ejectKeyDown]()
22 0x00f32920 in -[UIApplication _physicalButtonsBegan:withEvent:]()
23 0x0269a7cd in -[NSObject performSelector:withObject:withObject:]()
24 0x010f1c94 in forwardTouchMethod()
25 0x010f4226 in -[UIResponder(Internal) _physicalButtonsBegan:withEvent:]()
26 0x0269a7cd in -[NSObject performSelector:withObject:withObject:]()
27 0x010f1c94 in forwardTouchMethod()
28 0x010f4226 in -[UIResponder(Internal) _physicalButtonsBegan:withEvent:]()
29 0x0269a7cd in -[NSObject performSelector:withObject:withObject:]()
30 0x010f1c94 in forwardTouchMethod()
31 0x010f4226 in -[UIResponder(Internal) _physicalButtonsBegan:withEvent:]()
32 0x0269a7cd in -[NSObject performSelector:withObject:withObject:]()
33 0x010f1c94 in forwardTouchMethod()
34 0x010f4226 in -[UIResponder(Internal) _physicalButtonsBegan:withEvent:]()
35 0x0176f4d3 in -[UITextField _physicalButtonsBegan:withEvent:]()
36 0x00f8732a in -[UIWindow _sendButtonsForEvent:]()
37 0x00f878d8 in -[UIWindow sendEvent:]()
38 0x00f45681 in -[UIApplication sendEvent:]()
39 0x00f55ab8 in _UIApplicationHandleEventFromQueueEvent()
40 0x00f292e7 in _UIApplicationHandleEventQueue()
41 0x02d3006f in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__()
42 0x02d25b7d in __CFRunLoopDoSources0()
43 0x02d250d8 in __CFRunLoopRun()
44 0x02d24a5b in CFRunLoopRunSpecific()
45 0x02d2488b in CFRunLoopRunInMode()
46 0x058352c9 in GSEventRunModal()
47 0x05835106 in GSEventRun()
48 0x00f2d0b6 in UIApplicationMain()
49 0x001cd8ba in main at main.m:14
50 0x03b4cac9 in start()
Обновление: Я связался со службой поддержки яблока, чтобы получить помощь, так как я должен получить этот один решена. Моя мысль состоит в том, что мы делаем плохое управление памятью, но Profiler не показывает Zombies. У нас есть одна утечка памяти, хотя в ADBEncondingStringToHex, но они не смогли ничего сделать с этой информацией. Может быть, совсем не связано, может быть, нет ...
Есть ли у вас проблемы на реальном устройстве IOS? – rmaddy
Да, проблема возникает на симуляторе и на реальном устройстве (iPad Mini и iPad с 8.4 также). В обеих версиях Debug и Release. – escarti
Выстрел в темноте здесь, но я заметил вас [tf статьFirstResponder]; Вы когда-нибудь отменилиFirstResponder, прежде чем пытаться снова показать клавиатуру? – joels