0

我正在 iOS 上实现一些代码,突然遇到如上所述的错误。我无法弄清楚问题的根源是什么。但根据我的分析,这是由于 UIScrollView。我正在使用 ios 6 进行开发。附上错误的屏幕截图。在此处输入图像描述

这是我用于开发的代码。

@interface TutorialDetailViewController ()

@end

@implementation TutorialDetailViewController

@synthesize managedObjectContext;
@synthesize scrollView;
@synthesize imageView;
@synthesize textView;
@synthesize imageTapGestureRecognizer;
@synthesize imagePath;
@synthesize separator;

-(void) dealloc
{
    [managedObjectContext release];
    [scrollView release];
    [imageView release];
    [textView release];
    [imageTapGestureRecognizer release];
    [imagePath release];
    [separator release];
    [super dealloc];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    NSLog(@"View Did Load - Tutorial Detail View Controller");

    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

    PocketScholarAppDelegate *delegateObject = (PocketScholarAppDelegate *)[[UIApplication sharedApplication] delegate];

    if(self.managedObjectContext == nil)
    {
        self.managedObjectContext = [delegateObject managedObjectContext];
    }

    //UI Customization

    UIView *backButtonView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 42, 42)] autorelease];

    UIButton *backButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 42, 42)];
    UIImageView *separtorView = [[UIImageView alloc] initWithFrame:CGRectMake(41, 0, 1, 42)];
    separtorView.image = [UIImage imageNamed:@"NavButtonSeperator.png"];

    [backButton setBackgroundImage:[UIImage imageNamed:@"NavBackIcon.png"]
                          forState:UIControlStateNormal];
    [backButton addTarget:self
                   action:@selector(backAction)
         forControlEvents:UIControlEventTouchUpInside];

    [backButtonView addSubview:backButton];
    [backButtonView addSubview:separtorView];

    [separtorView release];
    [backButton release];

    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView: backButtonView];

    //fetch value of the selected tutorial from the user defaults
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSInteger tutorialId = [defaults integerForKey:SELECTED_TUTORIAL];

    NSPredicate *tutorialPredicate = [NSPredicate predicateWithFormat:@"tut_id==%d",tutorialId];
    NSMutableArray *tutorialArray = [NSObject getDataFromLocalDB:TUTORIAL_ENTITY withPredicate:tutorialPredicate forObjectContext:managedObjectContext];

    Tutorials *tObj = [tutorialArray objectAtIndex:0];

    self.title = tObj.tut_name;

    NSArray *documentDirectoryArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentDirectory = [documentDirectoryArray lastObject];

     self.imagePath = [documentDirectory stringByAppendingPathComponent:tObj.tut_image];

    CGRect screenRect = [[UIScreen mainScreen] bounds];

    //Set the content size of the scroll view container
    self.scrollView.contentSize = CGSizeMake(screenRect.size.width, screenRect.size.height);

    self.imageView = [[UIImageView alloc] initWithFrame:CGRectMake(screenRect.size.width/2-70, 20, screenRect.size.width/2-20, screenRect.size.height/2-20)];
    self.imageView.backgroundColor = [UIColor clearColor];
    self.imageView.userInteractionEnabled = YES;

    self.imageTapGestureRecognizer = [[UITapGestureRecognizer alloc]
                                                         initWithTarget:self
                                                         action:@selector(imageTapped)];
    self.imageTapGestureRecognizer.numberOfTapsRequired = 1;
    [self.imageView addGestureRecognizer:self.imageTapGestureRecognizer];

    self.imageView.image = [UIImage imageWithData:[NSData dataWithContentsOfFile:imagePath]];

    if(![tObj.tut_description isEqualToString:@""])
    {
        self.textView = [[UITextView alloc] init];
        [self.textView sizeToFit];
        self.textView.backgroundColor = [UIColor clearColor];
        self.textView.font = [UIFont fontWithName:FONT_NAME size:14.0];
        self.textView.userInteractionEnabled = NO;
        self.textView.textColor = [UIColor colorWithRed:109.0/255.0 green:109.0/255.0 blue:109.0/255.0 alpha:1.0];
        self.textView.text = tObj.tut_description;
        self.textView.frame = CGRectMake(20,
                                         self.imageView.frame.size.height+60,
                                         screenRect.size.width-40,
                                         screenRect.size.height);
    }

    self.scrollView.showsHorizontalScrollIndicator = NO;

    self.separator = [[UIImageView alloc] initWithFrame:CGRectMake(0,
                                                                   self.imageView.frame.size.height+40,
                                                                   screenRect.size.width,
                                                                   3)];
    self.separator.image = [UIImage imageNamed:@"NavShadow.png"];

    [self.scrollView addSubview:self.imageView];
    [self.scrollView addSubview:separator];
    if(![tObj.tut_description isEqualToString:@""])
    {
        [self.scrollView addSubview:textView];

        CGRect textViewFrame = [textView frame];
        textViewFrame.size.height = self.textView.contentSize.height+40;
        self.textView.frame = textViewFrame;
    }

    CGFloat scrollContentHeight = screenRect.size.height + 80;
    self.scrollView.contentSize = CGSizeMake(screenRect.size.width, scrollContentHeight);

    self.view = self.scrollView;

//    [separator release];
}

- (void)didReceiveMemoryWarning
{
    NSLog(@"Did Receive Memory Warning");
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - Custom Methods
-(void) backAction
{
    [self.navigationController popViewControllerAnimated:YES];
}

-(void) imageTapped
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:imagePath forKey:SELECTED_IMAGE];
    [defaults synchronize];

    TutorialImageViewController *imageController = [[TutorialImageViewController alloc] initWithNibName:@"TutorialImageViewController" bundle:nil];
    [self.navigationController pushViewController:imageController animated:YES];
    [imageController release];

}

@end
4

0 回答 0