2009-07-13 7 views
3

사용자 정의 tableFooterView에 일부 UIButton을 추가했습니다. 문제는 버튼 이벤트가 호출되지 않는다는 것입니다. 또한 UIControlStateHighlighted와 관련된 이미지가 표시되지 않습니다. 어떤 아이디어? 나는 생각할 수있는 모든 것을 시도했지만 트릭을 찾을 수 없습니다. 여기에 UITableViewController의 흥미로운 부분이 있습니다.UIButtons on tableFooterView 이벤트에 응답하지 않습니다.

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection: (NSInteger)section 
{ 
    CGRect footerFrame = CGRectMake(0.0, 0.0, 480, 190); 
    _footerView = [[UIImageView alloc] initWithFrame: footerFrame]; 
    _footerView.image = [UIImage imageNamed:@"tableviewfooter.png"]; 
    _footerView.contentMode = UIViewContentModeTopLeft; 

    UIButton *addExam = [self createButtonWithFrame: CGRectMake(10, 30, 460, 58) Target: self Selector: @selector(addNewItem:) Image: @"additem.png" ImagePressed: @"additem_pressed.png"]; 
    [_footerView addSubview:addExam]; 

    return _footerView; 
} 

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection: (NSInteger) section 
{ 
    return 190; 
} 


- (void) addNewItem:(id)sender 
{ 
    // This get's never called 
    NSLog(@"Pressed"); 
} 


- (UIButton*) createButtonWithFrame: (CGRect) frame Target:(id)target Selector:(SEL)selector Image:(NSString *)image ImagePressed:(NSString *)imagePressed 
{ 
    UIButton *button = [[UIButton alloc] initWithFrame:frame]; 

    UIImage *newImage = [UIImage imageNamed: image]; 
    [button setBackgroundImage:newImage forState:UIControlStateNormal]; 

    UIImage *newPressedImage = [UIImage imageNamed: imagePressed]; 
    [button setBackgroundImage:newPressedImage forState:UIControlStateHighlighted]; 

    [button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside]; 

    return button; 
} 

감사합니다.

답변

6

나는 UIImageView이 다른보기의 컨테이너로 특히 잘 작동하도록 설계되었습니다. 특히 UIButtons입니다. 하나는 UIImageView이고, 생성 될 때 속성은 기본적으로 false으로 설정됩니다.

간단히 UIView을 바닥 글보기로 만든 다음 UIButtonUIImageView을 직접 추가 할 것입니다.

+0

예. 그것이 원인이었습니다. 나는 오늘 무언가를 배웠다 :) –

관련 문제