UIModalTransitionStylePartialCurl doesn't get back to previous state. (Not dismissing)

I've got 2 view controllers, let's say A and B. In A, I'm calling B to be shown with transition style UIModalTransitionStylePartialCurl

[b setModalTransitionStyle:UIModalTransitionStylePartialCurl];
[self presentModalViewController:b animated:YES];

It is working fine. However when I press the curled area in the program compiled with iOS 4.3. It does not dismiss at all. It doesn't get back to A view controller...

What the most interesting is that this curl is active and giving response in the app compiled with iOS 5.0.

How can I resolve this problem?
Moreover, why doesn't it dismiss the B view controller and get back to A ?


Solution 1:

Here is the link to Apple site for the Modal View Controllers

Basically, you need to setup delegate, etc. And call dismissModalViewControllerAnimated: method from your viewcontroller A. Let me know if you need further help.

Edit per MiiChiel:

In BController.h file, add this:

@protocol BControllerDelegate <NSObject>
-(void)dismissMe;
@end

@interface BController : UIViewController
//...
@property (assign) id <BControllerDelegate> delegate;
//...
@end

In BController.m file, add this:

@implementation BController
@synthesize delegate;
//...
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self.delegate dismissMe];
}

In the AController.h file, add this:

#import "BController.h"

@interface AController : UIViewController  <BControllerDelegate>

In the AController.m file, add this:

//add this line before presenting the modal view controller B
bController.delegate = self;  // assuming bController is the name of the modal

-(void)dismissMe
{
    //call back from modal view to dismiss it
    [self dismissModalViewControllerAnimated:YES];
}