#iphone #xcode #ipad #camera #uiimagepickercontroller
#iPhone #xcode #iPad #камера #uiimagepickercontroller
Вопрос:
Я создаю оконное приложение (я использую оконное, потому что мне нравится, как организованы универсальные приложения), но у меня возникли проблемы с UIImagePickerControllerSourceTypeCamera. Я хочу иметь два представления:
родительский вид: экран меню вспомогательный вид: экран, на котором вы можете выбрать фотографию из галереи или где вы можете использовать камеру для съемки
Основная проблема заключается в том, что когда я нажимаю кнопку, чтобы сделать снимок с помощью камеры, это работает, и я могу видеть элементы управления камерой, и я даже могу сделать снимок без проблем. Однако любые объекты, находящиеся в родительском представлении, закрывают экран «поиска вида». (т. Е. если я направляю свою камеру на цветок, я могу видеть цветок на экране, но на него накладываются кнопки и изображения из родительского представления. Я надеюсь, что это имеет смысл).
Я добавляю imagePickerController в качестве модального представления. Вы можете увидеть код ниже. Когда я выбираю фотографию из альбома, кажется, что все работает нормально, но когда я пытаюсь сделать снимок с помощью камеры, создается впечатление, что он отправляется в конец всего.
-(IBAction)setImage:(id)sender{
UIImagePickerController* picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
if((UIButton *) sender == ChoosePhoto) {
picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
} else {
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
}
[self presentModalViewController:picker animated:YES];
}
Возможно, я просто упускаю что-то действительно очевидное. Буду признателен за любую помощь. Спасибо!
Ответ №1:
Похоже, что вы помещаете все свои «подвиды» в UIWindow, а не в представление контроллера корневого представления. Не делайте этого, добавьте их в представление контроллера корневого представления.
Комментарии:
1. Спасибо за ответ! Извините, если это очень глупый вопрос, но что вы подразумеваете под контроллером корневого просмотра. Вы предлагаете использовать несколько UIWindows вместо вложенных представлений? Извините, просто немного запутался =
2. @user744349: Нет. На верхнем уровне у вас есть один объект UIWindow. В версии 4.0 и более поздних версиях вы не должны добавлять к этому какие-либо представления самостоятельно, только установите
rootViewController
свойство (в версии до 4.0 вы вместо этого делаете[window addSubview:myRootViewController.view]
только один раз вapplicationDidFinishLaunching:
). В IB в окне не должно быть никаких вложенных представлений. Этот объект UIViewController, который вы назначаетеrootViewController
свойству window, является вашим корневым контроллером просмотра. У нее естьview
свойство. Вы должны добавить свои подвиды в это представление либо в IB, либо программно.3. Я думаю, что я приближаюсь к выполнению этой работы. Я исследовал и обнаружил, что, как вы сказали, до версии 4.0 используется ‘[window addSubview:ViewController.view];’, но после версии 4.0 следует использовать ‘self.window.RootViewController = self.ViewController;’. Теперь, когда я переключаю просмотры из главного меню на страницу моей камеры (которая вызывает камеру через presentModalViewController), должен ли я сделать это с помощью ‘[self.view addSubview:mycamerapage_iPad.view];’? Я думаю, что вот где я застрял. Вы случайно не знаете каких-либо примеров или руководств по RootViewController? Я просто обдумываю корневые представления в xcode4
4. @user744349: Вы могли бы заменить RootViewController окна на страницу вашей камеры, или вы могли бы модально представить страницу камеры (которая затем модально представляла бы камеру поверх себя), или вы могли бы использовать UINavigationController в качестве root.
5. Спасибо Anomie за ваш совет. Прочитав ваш комментарий, я решил провести дополнительные исследования о модальных представлениях и применить страницу камеры модально. На этот раз все просмотры, которые у меня были до главной страницы, на которую я модально загрузил страницу камеры, были бы сверху. Я всегда думал, что модальное представление страницы поместит ее наверх. Итак, я экспериментировал. Я использовал точный код на iPad и в версии для iPhone. Версия для iPhone работает без проблем. iPad всегда покрывается. Даже когда я запускаю версию только для iPhone на iPad, это работает. Есть ли ошибка в том, как камера iPad обрабатывает модальные представления?