2011-09-19 1 views
0

UIButton에 이상한 문제가 있습니다. UIControlStateHighlighted 상태의 배경 이미지를 설정했지만 배경 이미지가 변경되지 않습니다. 대상/선택기가 여전히 호출되지만 대상/선택기를 제거하면 정상적으로 작동합니다.UIControlStateHighlighted의 이상한 문제

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(currentXPos, 0, minWidth + additionalSpacing, self.bounds.size.height)]; 
    [button setBackgroundImage:[UIImage imageNamed:@"cellBackgroud.png"] forState:UIControlStateNormal]; 
    [button setBackgroundImage:[UIImage imageNamed:@"cellBackgroudSelected.png"] forState:UIControlStateHighlighted]; 
    [button setTitle:text forState:UIControlStateNormal]; 
    [button setTitleColor:[UIColor orangeColor] forState:UIControlStateNormal]; 
    [[button titleLabel] setFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:14]]; 
    [button setTag:i]; 
    [button addTarget:delegate action:@selector(topCellPressed:) forControlEvents:UIControlStateHighlighted]; 
    [self addSubview:button]; 

내가 지금 어떤 도움을 주시면 감사하겠습니다 잠시 동안이 붙어있다 ... 감사합니다 :

여기 내 코드입니다!

+0

[button addTarget : 자기 행동 : @selector (topCellPressed :) forControlEvents : UIControlStateHighlighted]와 같아야합니다. –

+0

하지만 나는 자기를 원하지 않는다. 나는 대의원을 원한다. 앞서 말했듯이이 메서드는 대리자에서 호출됩니다. – 0xSina

+0

그런 다음 cellBackgroudSelected.png를 확인하십시오. 이미지가 ur 리소스 폴더에 있습니다. –

답변

1

대상 지정에 잘못된 유형이 사용되었습니다. UIControlEvent이 아닌 UIControlState이 필요합니다. 컨트롤 상태가 이벤트를 제어하는 ​​매우 다른 비트 마스크이기 때문에 현재 버튼을 설정하고있는 것은 쓰레기입니다.

는 명목상 버튼을 눌러 당신은

[button addTarget:delegate action:@selector(topCellPressed:) forControlEvents:UIControlEventTouchUpInside]; 

UIControlEventTouchUpInside 임 당신이에 대한 경고가 주어진 컴파일러 었소을 놀라게합니다.

+0

멋진 캐치 워렌 ... !! – samfisher

+0

잘 연주되었습니다. – 0xSina