2

My iOS app contains rounded corners for the whole application (described here)

UIImage *overlayImg;

int offset;

if(IS_IPHONE_5) {
    overlayImg = [UIImage imageNamed:@"rounded4inch.png"];
    offset = 548;
} else {
    overlayImg = [UIImage imageNamed:@"rounded.png"];
    offset = 461;
}

CALayer *overlay = [CALayer layer];
overlay.frame = CGRectMake(0, 20, overlayImg.size.width,offset);
overlay.contents = (id)overlayImg.CGImage;
overlay.zPosition = 1;
[self.window.layer addSublayer:overlay];

But now my modal MFMailComposeViewController doesn't respond to touches. I cannot edit the input fields, send the mail, or dismiss it. It's just frozen and doesn't respond to touches.

Community
  • 1
  • 1
Henrik P. Hessel
  • 36,243
  • 17
  • 80
  • 100
  • 1
    an unrelated hint: you only need one small 50x50px image for all screen sizes. just use a resizable image. (`resizableImageWithCapInsets:resizingMode:`) – calimarkus Oct 08 '12 at 18:21
  • @jaydee3 great hint but that doesn't solve the layering problem that prevents touch input for the mail controller ;) – Henrik P. Hessel Oct 08 '12 at 20:33

2 Answers2

2

I had the same behavior. Never any problem got resolved for me by restarting the device, but this time it did. Strange.

I have the iOS 6.0 GM installed, not the over-the-air install. Maybe an issue with the GM.

Martin Stolz
  • 5,176
  • 3
  • 21
  • 19
0

The solution is to hide the layer after displaying the modal mail composer

    [delegate.navigationController presentViewController:mfViewController animated:YES completion:^void() {
        CALayer* layer = (CALayer*)[delegate.window.layer.sublayers objectAtIndex:1];
        [layer setHidden:YES];
    }];

and reshow it after the modal view is dismissed

[self dismissViewControllerAnimated:YES completion:^void() {
    CALayer* layer = (CALayer*)[delegate.window.layer.sublayers objectAtIndex:1];
    [layer setHidden:NO];
}];
Henrik P. Hessel
  • 36,243
  • 17
  • 80
  • 100