UIViewPickerController бағдарламасын UIView ішіне пайдалану

Менде батырмасын басқан кезде камераны көрсетеді (жақсы жұмыс істейді)

- (IBAction)getPhoto:(id)sender
{
    NSLog( @"Button clicked!" );
    imagePicker = [[UIImagePickerController alloc] init];
    imagePicker.delegate = self;

    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
        [imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
    }

    else { //IF the device doesn't have a camera, so use the photos album
        [imagePicker setSourceType:UIImagePickerControllerSourceTypeSavedPhotosAlbum];
    }

    [self addSubview:imagePicker.view];
}

Содан кейін суретке түсіруге болады, және т.б. - Бірақ мен «пайдалану» басқан кезде: мұнда ештеңе болмайды, менің әдісім: сурет таңдаушысы өздігінен бас тартпайды: қосымша жай ғана ештеңе жасамайды, мен жай ғана суретке түсіруге тырысамын оны экранда CGRect ішіне алып келді.

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    [picker dismissViewControllerAnimated:YES completion:NULL];

    UIImageView *patientImage = [[UIImageView alloc] init];
    patientImage.frame = CGRectMake(625, 25, 83, 103);

    UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
    self.patientImage.image = chosenImage;
}

Тіпті суретке түсірместен бас тарту түймесін бассам да, imagePicker (камера интерфейсі) өзін босатпайды

Кез келген көмек, кеңес немесе басшылық өте бағаланады.

8
patientImage.frame = CGRectMake (625, 25, 83, 103); мұнда x - құрылғының экраны жоқ :( сондықтан суретті көре алмайсыз, сонымен қатар [таңдаушыны ажыратуControllerAnimated: YES аяқтау: NULL] әдісінің соңында
қосылды автор Nitin Gohel, көзі
patientImage.frame = CGRectMake (625, 25, 83, 103); мұнда x - құрылғының экраны жоқ :( сондықтан суретті көре алмайсыз, сонымен қатар [таңдаушыны ажыратуControllerAnimated: YES аяқтау: NULL] әдісінің соңында
қосылды автор Nitin Gohel, көзі
Нитинге алғыс айтамын, бірақ мен iPad-ды қолданамын, сондықтан ол менің экранымда, мен босатуVieController-ды ауыстыруға тырысамын
қосылды автор Taskinul Haque, көзі
Нитинге алғыс айтамын, бірақ мен iPad-ды қолданамын, сондықтан ол менің экранымда, мен босатуVieController-ды ауыстыруға тырысамын
қосылды автор Taskinul Haque, көзі
patientImage кез келген көрініске қосылған ба? сияқты [self addSubview: patientImage];
қосылды автор Kuriakose Pious P, көзі
patientImage кез келген көрініске қосылған ба? сияқты [self addSubview: patientImage];
қосылды автор Kuriakose Pious P, көзі

11 жауаптар

You shouldn't be doing the "addSubview" thing up there but instead do:

[self presentViewController:imagePicker animated:YES completion:nil];
5
қосылды
Көзқарас басқа контролерді ұсыну үшін жауапты болмауы керек. Бұл iOS-дің ядросында орналасқан MVC-ке қарсы. Бұл жауапта ұсынылғандай, сіз оны көру контроллерін жасауыңыз керек.
қосылды автор JRG-Developer, көзі
Мәселе presentViewController UIViewController әдісі болып табылады, маған бұл бағдарлама UIView ішінде жұмыс істеу үшін керек пе?
қосылды автор Taskinul Haque, көзі

You shouldn't be doing the "addSubview" thing up there but instead do:

[self presentViewController:imagePicker animated:YES completion:nil];
5
қосылды
Көзқарас басқа контролерді ұсыну үшін жауапты болмауы керек. Бұл iOS-дің ядросында орналасқан MVC-ке қарсы. Бұл жауапта ұсынылғандай, сіз оны көру контроллерін жасауыңыз керек.
қосылды автор JRG-Developer, көзі
Мәселе presentViewController UIViewController әдісі болып табылады, маған бұл бағдарлама UIView ішінде жұмыс істеу үшін керек пе?
қосылды автор Taskinul Haque, көзі

Таңдаушыны ішкі көрініс ретінде қосудың орнына, таңдау құралын UIPopoverController қосыңыз.

Оны келесідей presentPopoverFromRect: inView: allowedtedArrowDirections: animated: popover әдісін пайдалану арқылы UIView қосалқы сыныбыңыздан көрсетуіңізге болады:

self.popover = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
[self.popover presentPopoverFromRect:sender.frame inView:self permittedArrowDirections: UIPopoverArrowDirectionAny animated:YES];

Содан кейін popover-ды пайдаланып, өкілетті әдістерін пайдалана аласыз:

[self.popover dismissPopoverAnimatedYES];

ресми құжаттармен :

Кесте iPad-ға бастапқы кодын көрсеткен жағдайда UIImagePickerControllerSourceTypePhotoLibrary немесе    UIImagePickerControllerSourceTypeSavedPhotosAlbum , сізге көрсету керек   суретте сипатталғандай popover контроллерін пайдаланатын кескінді таңдау құралы   «UIPopoverController» класындағы «Поповерді ұсыну және босату»   Анықтама. Егер суретті таңдауды модальды түрде көрсетуге тырыссаңыз   (толық экранды) сақталған суреттер мен фильмдер арасында жүйені таңдауға арналған   алып тастайды.

     

iPad-да, егер сіз бастапқы түрін көрсетсеңіз    UIImagePickerControllerSourceTypeCamera , сіз бейнені көрсете аласыз   таңдаулы модуль (толық экран) немесе popover арқылы. Дегенмен, Apple   

камералық интерфейсті толық экранға ұсынуға кеңес береді
5
қосылды

Таңдаушыны ішкі көрініс ретінде қосудың орнына, таңдау құралын UIPopoverController қосыңыз.

Оны келесідей presentPopoverFromRect: inView: allowedtedArrowDirections: animated: popover әдісін пайдалану арқылы UIView қосалқы сыныбыңыздан көрсетуіңізге болады:

self.popover = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
[self.popover presentPopoverFromRect:sender.frame inView:self permittedArrowDirections: UIPopoverArrowDirectionAny animated:YES];

Содан кейін popover-ды пайдаланып, өкілетті әдістерін пайдалана аласыз:

[self.popover dismissPopoverAnimatedYES];

ресми құжаттармен :

Кесте iPad-ға бастапқы кодын көрсеткен жағдайда UIImagePickerControllerSourceTypePhotoLibrary немесе    UIImagePickerControllerSourceTypeSavedPhotosAlbum , сізге көрсету керек   суретте сипатталғандай popover контроллерін пайдаланатын кескінді таңдау құралы   «UIPopoverController» класындағы «Поповерді ұсыну және босату»   Анықтама. Егер суретті таңдауды модальды түрде көрсетуге тырыссаңыз   (толық экранды) сақталған суреттер мен фильмдер арасында жүйені таңдауға арналған   алып тастайды.

     

iPad-да, егер сіз бастапқы түрін көрсетсеңіз    UIImagePickerControllerSourceTypeCamera , сіз бейнені көрсете аласыз   таңдаулы модуль (толық экран) немесе popover арқылы. Дегенмен, Apple   

камералық интерфейсті толық экранға ұсынуға кеңес береді
5
қосылды

UIView қосалқы сыныбындағы getPhoto: әдісі ма?

Егер бұл іс болса, онда жақсы болар еді:

  1. Move the getPhoto: code out of the UIView subclass entirely, and put it in the view's parent view controller.

  2. Make your UIButton a property of your UIView: @property (nonatomic, strong) UIButton *myButton;

  3. In your view controller, set the button's target & action as follows:

    [myView.myButton addTarget:self action:@selector(getPhoto:) forControlEvents:UIControlEventTouchUpInside];
    
  4. Finally, in your getPhoto: method, call [self presentViewController:imagePicker animated:YES completion:NULL];

  5. Your - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info code should also go in the view controller, changing self.patientImage.image = chosenImage; to myView.patientImage.image = chosenImage;

4
қосылды
3-жолды ViewController сыныбының қарап шығу әдісіне орналастырған кезде, «PicBtn myView түрінің нысанында табылмады» деп қате жіберемін, бірақ мен PicBtn-ті UIButton деп жарияладым және менің UIView сыныбының тақырыбындағы меншік ретінде жарияладым « myView «
қосылды автор Taskinul Haque, көзі
Олардың сұрақтарына қызығушылық танытқандар үшін @vinnyCoyne деп айтқан дұрыс. . . . бірақ myView.myButton деп аталатын орнына алдымен myView Class данасын жасау керек, содан кейін оны айнымалы айнымалы атау арқылы шақырыңыз. Бұл менің проблемамды шешді. . Рақмет сізге
қосылды автор Taskinul Haque, көзі

UIView қосалқы сыныбындағы getPhoto: әдісі ма?

Егер бұл іс болса, онда жақсы болар еді:

  1. Move the getPhoto: code out of the UIView subclass entirely, and put it in the view's parent view controller.

  2. Make your UIButton a property of your UIView: @property (nonatomic, strong) UIButton *myButton;

  3. In your view controller, set the button's target & action as follows:

    [myView.myButton addTarget:self action:@selector(getPhoto:) forControlEvents:UIControlEventTouchUpInside];
    
  4. Finally, in your getPhoto: method, call [self presentViewController:imagePicker animated:YES completion:NULL];

  5. Your - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info code should also go in the view controller, changing self.patientImage.image = chosenImage; to myView.patientImage.image = chosenImage;

4
қосылды
3-жолды ViewController сыныбының қарап шығу әдісіне орналастырған кезде, «PicBtn myView түрінің нысанында табылмады» деп қате жіберемін, бірақ мен PicBtn-ті UIButton деп жарияладым және менің UIView сыныбының тақырыбындағы меншік ретінде жарияладым « myView «
қосылды автор Taskinul Haque, көзі
Олардың сұрақтарына қызығушылық танытқандар үшін @vinnyCoyne деп айтқан дұрыс. . . . бірақ myView.myButton деп аталатын орнына алдымен myView Class данасын жасау керек, содан кейін оны айнымалы айнымалы атау арқылы шақырыңыз. Бұл менің проблемамды шешді. . Рақмет сізге
қосылды автор Taskinul Haque, көзі

Оның орнына [self.addSubView: imagePicker.view]; және оның орнына жойыңыз

[self presentViewController: imagePicker анимация: ИӘ аяқтау: NULL];

picker белгісі анықталмағанымен, picker айнымалы мәнін жібересіз. Орнына қойыңыз:

[self dismissModalViewControllerAnimated:YES completion:NULL]; and make sure its at the end of your method.

1
қосылды

Оның орнына [self.addSubView: imagePicker.view]; және оның орнына жойыңыз

[self presentViewController: imagePicker анимация: ИӘ аяқтау: NULL];

picker белгісі анықталмағанымен, picker айнымалы мәнін жібересіз. Орнына қойыңыз:

[self dismissModalViewControllerAnimated:YES completion:NULL]; and make sure its at the end of your method.

1
қосылды

Тырысу:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    [picker.view removeFromSuperview];

    UIImageView *patientImage = [[UIImageView alloc] init];
    patientImage.frame = CGRectMake(625, 25, 83, 103);

    UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
    self.patientImage.image = chosenImage;
}
1
қосылды

Тырысу:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    [picker.view removeFromSuperview];

    UIImageView *patientImage = [[UIImageView alloc] init];
    patientImage.frame = CGRectMake(625, 25, 83, 103);

    UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
    self.patientImage.image = chosenImage;
}
1
қосылды

Болдырмау түймешігі неге жұмыс істемейтінін білмейсіз. Бірақ бұл өзгерісті жасаңыз, сіз таңдаған суретті таңдайсыз.

Егер сіз жою оқиғасы оны UIBarButton құрып, оны қосып қоссаңыз.

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

UIImageView *patientImage = [[UIImageView alloc] init];
patientImage.frame = CGRectMake(625, 25, 83, 103);

UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
self.patientImage.image = chosenImage;

[imagePicker.view removeFromSuperview];

}
1
қосылды