2013-12-23 3 views
7

Я получаю кучу отчетов о сбоях, которые очень похожи на следующие значения для диапазона. Иногда диапазон не 0-х можно было бы сказать, 2-хСтранный сбой в UITextview отменить на iOS 7

Application Specific Информация: * Нагрузочное приложение из-за неперехваченное исключение \ 'NSRangeException \', причина: \ '* - [NSBigMutableString substringWithRange]: Диапазон {0, 69} за пределами; Длина строки 0 \»

Last Exception Backtrace: 
0 CoreFoundation      0x2e879e83 __exceptionPreprocess + 131 
1 libobjc.A.dylib      0x38bd66c7 objc_exception_throw + 38 
2 CoreFoundation      0x2e879dc5 +[NSException raise:format:] + 112 
3 Foundation       0x2f1a1bd1 -[NSString substringWithRange:] + 120 
4 UIKit        0x311b2815 -[NSTextStorage(UIKitUndoExtensions)  _undoRedoAttributedSubstringFromRange:] + 132 
5 UIKit        0x315d9679 -[_UITextUndoOperationTyping undoRedo] + 296 
6 Foundation       0x2f296453 -[_NSUndoStack popAndInvoke] + 250 
7 Foundation       0x2f2952ef -[NSUndoManager undoNestedGroup] + 454 
8 UIKit        0x3127a147 -[UIApplication alertView:clickedButtonAtIndex:] + 142 
9 UIKit        0x31216449 -[_UIModalItemsCoordinator _notifyDelegateModalItem:tappedButtonAtIndex:] + 144 
10 UIKit        0x3121638d -[_UIModalItemAlertContentView tableView:didSelectRowAtIndexPath:] + 1000 
11 UIKit        0x3111b0cb -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:] + 1078 
12 UIKit        0x311ce863 -[UITableView _userSelectRowAtPendingSelectionIndexPath:] + 214 
13 UIKit        0x3107e781 _applyBlockToCFArrayCopiedToStack + 316 
14 UIKit        0x30ff67bb _afterCACommitHandler + 430 
15 CoreFoundation      0x2e844f69 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 20 
16 CoreFoundation      0x2e8428f7 __CFRunLoopDoObservers + 286 
17 CoreFoundation      0x2e842c43 __CFRunLoopRun + 738 
18 CoreFoundation      0x2e7ad471 CFRunLoopRunSpecific + 524 
19 CoreFoundation      0x2e7ad253 CFRunLoopRunInMode + 106 
20 GraphicsServices     0x334e72eb GSEventRunModal + 138 
21 UIKit        0x31062845 UIApplicationMain + 1136 
22 MyApp        0x00071f3b main (main.m:18) 
23 libdyld.dylib      0x390cfab7 start + 2 
+3

Можете ли вы поделиться кодом, который устанавливает диапазон? – tobinjim

+1

Не существует кода, который устанавливает это. Вы можете видеть, что на самом деле нет никаких звонков, исходящих из моего приложения. Все происходит от функции встряхивания до отмены, которая должна обрабатываться ОК. Мне интересно, есть ли у кого-нибудь еще эта проблема, и если есть обходной путь. –

+0

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

ответ

12

Если установить свойство текста UITextView после пользователя изменить его, кажется, что вам нужно позвонить [textView.undoManager removeAllActions], чтобы очистить историю отмены.

+0

Это хорошо, но я бы хотел, чтобы я мог использовать отмену в любом случае, даже если я вручную меняю текст (например, корректируя значение, чтобы оставаться в пределах определенной границы чисел) – Valerio

+0

См. [этот ответ] (http: //stackoverflow.com/questions/8262691/how-to-implement-undo-redo-with-programatic-change-of-the-textvalue-of-a-nstextv/8263781#8263781) до * Как реализовать отмену/повтор с программным изменением textValue NSTextView? *. – 0xced

Смежные вопросы