UIButton Added to a View's Subview Won't Respond
===

Been looking for this answer for a while with no luck. From Google to StackOverflow. The only answers I have found so far tell people to call initWithFrame in a view instead of just init. I replaced all my calls to init in UIViews with initWithFrame but I'm not having any luck.

I'm not using IB.

Here is my whole code for that:

    @interface UnlockKeyboard : UIView
    {
    	NSArray *buttons;
    	UITextField *passcodeFields;
    
    	UIImage *buttonBackgroundImage;
    	UIImage *buttonBackgroundHighlightedImage;
    	UIImage *middleButtonBackgroundImage;
    	UIImage *middleButtonBackgroundImageHighlighted;
    	UIImage *screenBackgroundImage;
    	UIImage *keypadViewBackgroundImage;
    
    	UIView *infoView;
    	UIView *keypadView;
    }
    @property(nonatomic, retain)UIImage *buttonBackgroundImage;
    @property(nonatomic, retain)UIImage *buttonBackgroundHighlightedImage;
    @property(nonatomic, retain)UIImage *screenBackgroundImage;
    @property(nonatomic, retain)UIImage* keypadViewBackgroundImage;
    
    @end
    
    @implementation UnlockKeyboard
    @synthesize buttonBackgroundImage = _buttonBackgroundImage;
    @synthesize buttonBackgroundHighlightedImage = _buttonBackgroundHighlightedImage;
    @synthesize screenBackgroundImage = _screenBackgroundImage;
    @synthesize keypadViewBackgroundImage = _keypadViewBackgroundImage;
    -(id)init
    {
    	if((self = [super initWithFrame:CGRectMake(0, 0, 320, 480)]))
    	{
    		_unlockKeyboardBundle = [NSBundle bundleForClass:[self class]];
    		buttonBackgroundImage = [UIImage imageWithContentsOfFile:[_unlockKeyboardBundle pathForResource:@"button" ofType:@"png"]];
    		middleButtonBackgroundImage = [UIImage imageWithContentsOfFile:[_unlockKeyboardBundle pathForResource:@"middleButton" ofType:@"png"]];
    		buttonBackgroundHighlightedImage = [UIImage imageWithContentsOfFile:[_unlockKeyboardBundle pathForResource:@"pushedButton" ofType:@"png"]];
    		middleButtonBackgroundImageHighlighted = [UIImage imageWithContentsOfFile:[_unlockKeyboardBundle pathForResource:@"pushedButtonMiddle" ofType:@"png"]];
    		keypadView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 200)];
    		NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    
    		NSMutableArray *tempButtons = [NSMutableArray array];
    		//self.frame = CGRectMake(320, 480, 0, 0);
    		self.backgroundColor = [UIColor lightGrayColor];
    		self.opaque = YES;
    		
    		UIButton *button1 = [UIButton buttonWithType:UIButtonTypeCustom];
    		[button1 setTitle:@"1" forState:UIControlStateNormal];
    		button1.frame = CGRectMake(0, 261, 106, 50);
    
    		UIButton *button4 = [UIButton buttonWithType:UIButtonTypeCustom];
    		[button4 setTitle:@"4" forState:UIControlStateNormal];
    		button4.frame = CGRectMake(0, 311, 106, 50);
    
    		UIButton *button7 = [UIButton buttonWithType:UIButtonTypeCustom];
    		[button7 setTitle:@"7" forState:UIControlStateNormal];
    		button7.frame = CGRectMake(0, 361, 106, 50);
    
    		UIButton *hint = [UIButton buttonWithType:UIButtonTypeCustom];
    		[hint setTitle:NSLocalizedString(@"Hint", @"Hint string") forState:UIControlStateNormal];
    		hint.frame = CGRectMake(0, 411, 106, 50);
    
    		UIButton *button2 = [UIButton buttonWithType:UIButtonTypeCustom];
    		[button2 setTitle:@"2" forState:UIControlStateNormal];
    		button2.frame = CGRectMake(106, 261, 108, 50);
    
    		UIButton *button5 = [UIButton buttonWithType:UIButtonTypeCustom];
    		[button5 setTitle:@"5" forState:UIControlStateNormal];
    		button5.frame = CGRectMake(106, 311, 108, 50);
    
    		UIButton *button8 = [UIButton buttonWithType:UIButtonTypeCustom];
    		[button8 setTitle:@"8" forState:UIControlStateNormal];
    		button8.frame = CGRectMake(106, 361, 108, 50);
    
    		UIButton *button0 = [UIButton buttonWithType:UIButtonTypeCustom];
    		[button0 setTitle:@"0" forState:UIControlStateNormal];
    		button0.frame = CGRectMake(106, 411, 108, 50);
    
    		UIButton *button3 = [UIButton buttonWithType:UIButtonTypeCustom];
    		[button3 setTitle:@"3" forState:UIControlStateNormal];
    		button3.frame = CGRectMake(214, 261, 106, 50);
    
    		UIButton *button6 = [UIButton buttonWithType:UIButtonTypeCustom];
    		[button6 setTitle:@"6" forState:UIControlStateNormal];
    		button6.frame = CGRectMake(214, 311, 106, 50);
    
    		UIButton *button9 = [UIButton buttonWithType:UIButtonTypeCustom];
    		[button9 setTitle:@"9" forState:UIControlStateNormal];
    		button9.frame = CGRectMake(214, 361, 106, 50);
    
    		UIButton *cancelOrDelete = [UIButton buttonWithType:UIButtonTypeCustom];
    		[cancelOrDelete setTitle:@"<-" forState:UIControlStateNormal];
    		cancelOrDelete.frame = CGRectMake(214, 411, 108, 50);
    
    		[tempButtons addObject:button1];
    		[tempButtons addObject:button2];
    		[tempButtons addObject:button3];
    		[tempButtons addObject:button4];
    		[tempButtons addObject:button5];
    		[tempButtons addObject:button6];
    		[tempButtons addObject:button7];
    		[tempButtons addObject:button8];
    		[tempButtons addObject:button9];
    		[tempButtons addObject:button0];
    		[tempButtons addObject:hint];
    		[tempButtons addObject:cancelOrDelete];
    
    		for(UIButton *theButton in tempButtons)
    		{
    			if([theButton.currentTitle isEqualToString:@"2"] || [theButton.currentTitle isEqualToString:@"5"] || [theButton.currentTitle isEqualToString:@"8"] || [theButton.currentTitle isEqualToString:@"0"])
    			{
    				[theButton setBackgroundImage:middleButtonBackgroundImage forState:UIControlStateNormal];
    				[theButton setBackgroundImage:middleButtonBackgroundImageHighlighted forState:UIControlStateHighlighted];
    			}else
    			{
    				[theButton setBackgroundImage:buttonBackgroundImage forState:UIControlStateNormal];
    				[theButton setBackgroundImage:middleButtonBackgroundImageHighlighted forState:UIControlStateHighlighted];
    			}
    			[keypadView addSubview:theButton];
    		}
    		[self addSubview:keypadView];
    		
    		[pool drain];
    	}
    	return self;
    }
    -(void)dealloc
    {
    	[buttons release];
    	[passcodeFields release];
    	[buttonBackgroundImage release];
    	[buttonBackgroundHighlightedImage release];
    	[screenBackgroundImage release];
    	[infoView release];
    	[keypadView release];
    	[super dealloc];
    }

Like you can see, I subclass UIView with UnlockKeyboard. UnlockKeyboard should have another subview (keypadView) that will contain all the UIButtons. So all in all keyboardView is a subview of UnlockKeyboards, and all these buttons should be inside keyboardView. I can add them just fine, but when I try to tap them, their control state doesn't change. And yes, like you have see, I replaced all calls to init with initWithFrame when creating UIViews.

Any help with this will be really appreciated.
