PDA

View Full Version : UIScrollView untouchable as subclass, fine normally




carlosbutler
Apr 28, 2011, 08:27 AM
I had a working scrollview, but decided to create it from a subclass to make my code look tidy. It worked fine before, it could scroll and the UIButtons in it worked fine.

Loading it as a subclass, it loads and displays correctly but it will not scroll any more nor will the buttons touch. I guess something is in front of it, blocking any touch but, from what I have written, there is nothing in front and it should work fine.

I am on the move now, and can post some code if anyone would like to see. But I'm sure I am just missing some line of code? As I said the scroll view was working perfectly fine before hand, so there is nothing missing from that.

Thanks

EDIT: Code below
AppViewController.h

#import <UIKit/UIKit.h>
#import "MyScrollView.h"

@interface AppgViewController : UIViewController <NSXMLParserDelegate, UIScrollViewDelegate> {
// Parsing the XML
NSXMLParser *xmlParser;

// Tab bar icons
UIButton *button_TabBarOne, *button_TabBarTwo, *button_TabBarThree, *button_TabBarFour;
UIImageView *imageview_TabBarOne, *imageview_TabBarTwo, *imageview_TabBarThree, *imageview_TabBarFour;

MyScrollView *myScrollView;
}

@property (nonatomic, retain) UIButton *button_TabBarOne, *button_TabBarTwo, *button_TabBarThree, *button_TabBarFour;
@property (nonatomic, retain) UIImageView *imageview_TabBarOne, *imageview_TabBarTwo, *imageview_TabBarThree, *imageview_TabBarFour;
@property (nonatomic, retain) MyScrollView *myScrollView;

- (void)hello;
- (void)fadeOut;
- (void)addTabBar;
- (void)loadRScrollView;
- (void)parseXML;

@end

AppViewController.m

#import "AppViewController.h"

@implementation AppViewController

@synthesize button_TabBarOne, button_TabBarTwo, button_TabBarThree, button_TabBarFour;
@synthesize imageview_TabBarOne, imageview_TabBarTwo, imageview_TabBarThree, imageview_TabBarFour;
@synthesize myScrollView;

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[self addTabBar];
[self parseXML];
[self fadeOut];
[self loadScrollView];

[super viewDidLoad];
}

- (void)loadScrollView {
myScrollView = [[MyScrollView alloc] init];
[self.view addSubview:myScrollView];
[self.view bringSubviewToFront:myScrollView];
myScrollView.userInteractionEnabled = YES;
}


MyScrollView.h

#import <UIKit/UIKit.h>

@interface MyScrollView : UIView <UIScrollViewDelegate> {
}
- (void)hello;
@end


MyScrollView.m

#import "MyScrollView.h"


@implementation MyScrollView

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}


UIScrollView *scrollview_One = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 205, 500)];
scrollview_One.showsHorizontalScrollIndicator = scrollview_One.showsVerticalScrollIndicator = NO;
scrollview_One.contentSize = CGSizeMake(205, 685);

scrollview_One.backgroundColor = [UIColor grayColor];
scrollview_One.delegate = self;

UIButton *button_One = [UIButton buttonWithType:UIButtonTypeCustom];
button_One.frame = CGRectMake(0, 0, 205, 137);
[button_One setImage:[UIImage imageNamed:@"thumb_010.jpg"] forState:UIControlStateNormal];
button_One.userInteractionEnabled = YES;

UIButton *button_Two = [UIButton buttonWithType:UIButtonTypeCustom];
button_Two.frame = CGRectMake(0, 200, 205, 137);
[button_Two setImage:[UIImage imageNamed:@"thumb_011.jpg"] forState:UIControlStateNormal];

UIButton *button_Three = [UIButton buttonWithType:UIButtonTypeCustom];
button_Three.frame = CGRectMake(0, 400, 205, 137);
[button_Three setImage:[UIImage imageNamed:@"thumb_012.jpg"] forState:UIControlStateNormal];

UIButton *button_Four = [UIButton buttonWithType:UIButtonTypeCustom];
button_Four.frame = CGRectMake(0, 600, 205, 137);
[button_Four setImage:[UIImage imageNamed:@"thumb_013.jpg"] forState:UIControlStateNormal];

UIButton *button_Five = [UIButton buttonWithType:UIButtonTypeCustom];
button_Five.frame = CGRectMake(0, 800, 205, 137);
[button_Five setImage:[UIImage imageNamed:@"thumb_014.jpg"] forState:UIControlStateNormal];


[scrollview_One addSubview:button_One];
[scrollview_One addSubview:button_Two];
[scrollview_One addSubview:button_Three];
[scrollview_One addSubview:button_Four];
[scrollview_One addSubview:button_Five];

[self addSubview:scrollview_One];
[self bringSubviewToFront:scrollview_One];

return self;
}
@end



Sydde
Apr 28, 2011, 09:49 PM
This does not make sense. If you want the buttons to slide around with the scroll view, you make them subviews of the content view. If you want them to be fixed in place above the scroll view, you make the subviews of the superview (MyScrollView). Generally speaking, you do not add subviews to a scroll view. Its subviews are the content view and the clip view. Anything more and it gets confused.

I assume you have not written and delegate methods because you have not gotten around to it?