#ios #ios4 #xcode4 #uiimagepickercontroller
#iOS #ios4 #xcode4 #uiimagepickercontroller
Вопрос:
У меня есть приложение, в котором я использую UIImagePickerController, и после того, как я закрываю его, либо делая снимок, либо используя кнопку отмены, некоторые пользовательские UIView начинают исчезать. Причина, по которой они исчезают, заключается в том, что их ширина или высота становятся равными 0. Я могу возиться с приложением (довольно большим, с панелью вкладок 4 и отдельными контроллерами модального представления), и все в порядке, пока не попытаюсь сделать снимок. Когда я пытаюсь открыть ImagePicker, я получаю это предупреждение:
предупреждение: Пытался удалить несуществующую библиотеку: /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.3.1 (8G4)/Symbols/System/Library/Frameworks/IOKit.framework/IOKit
Только что кое-что обнаружил. Возможно, причина исчезновения представлений заключается в том, что категория UIView Layout, которую я использую, перестает работать после этого предупреждения. Эта категория в основном помогает мне задать ширину / высоту для вида, подобного:
- (void) setWidth: (двойное)значение { CGRect frame = [self frame]; frame.size.width = round(значение); [self setFrame:frame]; }
Все исчезающие представления связаны с этой категорией, и если я выполняю эти изменения вручную, представления работают. Есть идеи?
Ответ №1:
У меня такое же предупреждение, как и у вас, но вместо этого приложение вылетает.
Причина в том, что у меня есть категория UIView, в которой есть метод:
(UIView *) Первый ответчик;
когда я меняю имя этого метода на
(UIView *)Первый ответчик;
проблема исчезла.
Я думаю, нам не следует называть методы в нашей категории аналогично именам встроенных методов этого класса.
Возможно, вы захотите изменить имя вашего метода на что-то вроде этого:
(void)changeWidth:(double)value
{
CGRect frame = [self frame];
frame.size.width = round(value);
[self setFrame:frame];
}
Комментарии:
1. setWidth: не является методом в UIView, поэтому перезапись не требуется.