У меня странная ситуация в одном контроллере представления, где эта строка падает в симуляторе 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 уже это делает), остается.