开发者

problem in adding second UIbutton in cameraOverlayView

problem in adding second UIbutton in cameraOverlayView ,here i am able to add the first button but not able to add second button with following code

- (void)pickAndDecodeFromSource:(UIImagePickerControllerSourceType) sourceType {
  [self reset];

  // Create the Image Picker
  if ([UIImagePickerController isSourceTypeAvailable:sourceType]) {
    UIImagePickerController* aPicker =
        [[[UIImagePickerController alloc] init] autorelease];
    aPicker.sourceType = sourceType;
    aPicker.delegate = self;
    self.picker = aPicker;


    // [[NSUserDefaults standardUserDefaults] boolForKey:@"allowEditing"];
    BOOL isCamera = (sourceType == UIImagePickerControllerSourceTypeCamera);
    if ([picker respondsToSelector:@selector(setAllowsEditing:)]) {
      // not in 3.0
      [picker setAllowsEditing:!isCamera];
    }
    if (isCamera) {
      if ([picker respondsToSelector:@selector(setShowsCameraControls:)]) {
        [picker setShowsCameraControls:NO];
        UIButton *cancelButton =
          [UIButton buttonWithType:UIButtonTypeRoundedRect];
        NSString *cancelString =
          NSLocalizedString(@"DecoderViewController cancel button title", @"");
        CGFloat height = [UIFont systemFontSize];
        CGSize size = 

          [cancelString sizeWithFont:[UIFont systemFontOfSize:height]];
        [cancelButton setTitle:cancelString forState:UIControlStateNormal];
          //cancelButton.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"CancelButtonForButton.png"]];
          //cancelButton.backgroundColor = [UIColor clearColor];
          //cancelButton.backgroundColor = [UIColor greenColor];
            [cancelButton setImage:[UIImage imageNamed:@"cancelForButton.png"] forState:UIControlStateNormal];
          //[cancelButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 

        CGRect appFrame = [[UIScreen mainScreen] bounds];
        static const int kMargin = 10;
        static const int kInternalXMargin = 10;
        static const int kInternalYMargin = 10;
        CGRect frame = CGRectMake(kMargin,
          appFrame.size.height - (height + 2*kInternalYMargin + kMargin),
          2*kInternalXMargin + size.width,
          height + 2*kInternalYMargin);
        [cancelButton setFrame:frame];
        [cancelButton addTarget:self
                         action:@selector(cancel:)
               forControlEvents:UIControlEventTouchUpInside];
        picker.cameraOverlayView = cancelButton;
        // The camera takes quite a while to start up. Hence the 2 second delay.
        [self performSelector:@selector(takeScreenshot)
                   withObject:nil
                   afterDelay:2.0];
          //cancelButton.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg.png"]];
      }
    }

    // Picker is displayed asynchronously.
    [self presentModalViewCont开发者_StackOverflowroller:picker animated:YES];
  } else {
    NSLog(@"Attempted to pick an image with illegal source type '%d'", sourceType);
  }
}


The issue is that you are replacing the camera overlay with the first button - so creating the second button and using "picker.cameraOverlayView = newButton;" replaces the camera-overlay again.

The solution is to create a parent UIView, add both buttons to it, and then set the camera overlay to be the parent UIView.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜