UITextView setBorderStyle вылетает в симуляторе iOS 5 - PullRequest
2 голосов
/ 16 октября 2011

У меня странная ситуация в одном контроллере представления, где эта строка падает в симуляторе iOS 5:

   // myTextField is created in a NIB
   myTextField.borderStyle = UITextBorderStyleNone;

Все нормально в устройстве (и устройстве, и симуляторе в iOS 4.3).Я проверил соединения в NIB (даже удалил и переподключил).myTextField имеет retainCount 2 на данный момент в коде.Я устанавливаю другие атрибуты (например, «text» и «userInteractionEnabled» до этого момента, и они не вызывают сбой.

Однако, если я использую эту последовательность, она не вылетает:

   myTextField.borderStyle = 4; // not a defined border style
   myTextField.borderStyle = UITextBorderStyleNone;

Если я использую 1, 2 или 3 (определенные стили) вместо «4» (неопределенный стиль границы), происходит сбой. «7» работает.

В другом моем представленииконтроллеры, у меня есть аналогичные textViews, и нет проблем с установкой borderStyle в UITextBorderStyleNone.

Редактировать: Вот обратный след:

Thread 1, Queue : (null)
#0  0x01e0609b in objc_msgSend ()
#1  0x005c1c22 in -[UIView(Hierarchy) _setBackgroundColor:] ()
#2  0x005c3a06 in -[UIView(Rendering) setBackgroundColor:] ()
#3  0x0063eab7 in -[UITextField setBackgroundColor:] ()
#4  0x0063e1b6 in -[UITextField setBorderStyle:] ()
#5  0x000c23e6 in -[DutyEditViewController viewWillAppear:] at /Users/jeff/Applications/iPhone/MyApp/Classes/DutyEditViewController.m:197
#6  0x00651fbf in -[UIViewController _setViewAppearState:isAnimating:] ()
#7  0x0065221b in -[UIViewController __viewWillAppear:] ()
#8  0x006524c3 in -[UIViewController beginAppearanceTransition:animated:] ()
#9  0x00662b71 in -[UINavigationController _startTransition:fromViewController:toViewController:] ()
#10 0x006633df in -[UINavigationController _startDeferredTransitionIfNeeded] ()
#11 0x00663986 in -[UINavigationController pushViewController:transition:forceImmediate:] ()
#12 0x0c894dbd in -[UINavigationControllerAccessibility(SafeCategory) pushViewController:transition:forceImmediate:] ()
#13 0x006635a4 in -[UINavigationController pushViewController:animated:] ()
#14 0x000bf99a in -[DutiesTableViewController tableView:didSelectRowAtIndexPath:] ()
#15 0x0061a71d in -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:] ()
#16 0x0061a952 in -[UITableView _userSelectRowAtPendingSelectionIndexPath:] ()
#17 0x0025386d in __NSFireDelayedPerform ()
#18 0x020dc966 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ ()
#19 0x020dc407 in __CFRunLoopDoTimer ()
#20 0x0203f7c0 in __CFRunLoopRun ()
#21 0x0203edb4 in CFRunLoopRunSpecific ()
#22 0x0203eccb in CFRunLoopRunInMode ()
#23 0x0258a879 in GSEventRunModal ()
#24 0x0258a93e in GSEventRun ()
#25 0x0058aa9b in UIApplicationMain ()
#26 0x0006117d in main ()
#27 0x00002c65 in start ()

Я заметил, что setBorderStyle: делает setBackgroundColor :, такизменил мой код на это:

myTextField.backgroundColor = [UIColor clearColor];
myTextField.borderStyle = UITextBorderStyleNone;

и сбой больше не происходит. Но цвет фона устанавливается в «Очистить цвет» в NIB.

Итак, сбойушел, но загадка, почему я должен установить цвет фона (даже если NIB уже это делает), остается.

Ответы [ 2 ]

4 голосов
/ 02 ноября 2011

решаемая. Это ошибка iOS 5.0, и она есть в iOS 5 на устройствах, а не только на симуляторе. Сбой произойдет при установке свойства borderStyle UITextField, если backgroundColor был установлен с помощью colorWithRed UIColor: зеленый: синий: альфа:.

Сбой не происходит, если backgroundColor текстового поля был установлен с использованием предустановленного цвета, например, clearColor. Нет сбоя, если для borderStyle установлено текущее значение.

Я отправил отчет в Apple (идентификатор ошибки 10381834).

0 голосов
/ 17 октября 2011

Во-первых, retainCount не имеет значения; даже бессмысленно.

Во-вторых, если у вас есть сбой, то у вас есть отчет о трассировке и / или сбое. Разместите его.

Наконец, если в симуляторе происходит сбой, но не на устройстве, это может быть ошибкой симулятора. Или нет. Может быть ошибка в вашем приложении, которая может привести к катастрофическим сбоям в симуляторе.

Не могу сказать больше без дополнительных подсказок.

...