문제

사용자 정의 Uibutton 서브 클래스에 DrawRect를 사용하면 강조 표시 될 때 버튼을 그리는 것이 호출되지 않는 것 같습니다. 터치 이벤트에서 내 버튼에 setneedSdisplay를 호출해야합니까?

도움이 되었습니까?

해결책

내가 말할 수있는 한, Uibutton 서브 클래스를 향한 간단한 방법은 없습니다.

Uibutton은 이니셜 라이더가 반환하는 실제 클래스 유형이 아닙니다. Uibutton은 일련의 개인 수업을위한 일종의 전선입니다.

당신이 가지고 있다고 말하기 :

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
NSLog(@"myButton type: %@", [myButton description]);

로그에서 반환 된 유형이 "uiroundedRectButton"으로 반환됩니다. 그 문제는 "uiroundedrectbutton"을 확장해야한다는 것입니다. 그것은 Uibutton으로 만 돌아온 개인 계급이기 때문에 불가능합니다.

그 외에도 "uiroundedrectbutton"만이 유일하게 반환 된 클래스는 모두 비공개 일뿐입니다.

다시 말해 Uibutton은 확장하기에 적합하지 않은 방식으로 지어졌습니다.

다른 팁

쉬운 해결책을 찾았습니다.

Uibutton 서브 클래스에 다음 방법을 추가하십시오.

-(void)setHighlighted:(BOOL)highlighted
{
    [super setHighlighted:highlighted];
    [self setNeedsDisplay];
}

그게 다야!

나는 같은 문제가 있었고 다음과 같은 다음으로 추가 된 성공을 거두었습니다. UIButton 아강

- (void)awakeFromNib {
    [self addTarget:self action:@selector(redraw) forControlEvents:UIControlEventAllEvents];
}

- (void)redraw {
    [self setNeedsDisplay];
    [self performSelector:@selector(setNeedsDisplay) withObject:self afterDelay:0.15];
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top