簡體   English   中英

按下時重繪UIButton

[英]redraw UIButton when pressed

我正在使用paintcodeapp繪制我的自定義按鈕。 我畫了兩種不同的狀態:“按下”和“正常”

當按鈕處於“按下狀態”時,我需要調用setNeedsDisplay

然后,我在drawRect:方法中使用self.highlighted調度兩個繪制

我嘗試過:

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [self addTarget:self action:@selector(didDetectEvent:) forControlEvents:UIControlEventTouchDown];
        [self addTarget:self action:@selector(didDetectEvent:) forControlEvents:UIControlEventTouchUpInside];
        [self addTarget:self action:@selector(didDetectEvent:) forControlEvents:UIControlStateNormal];

    }
    return self;
}

-(void)didDetectEvent:(id)sender {
    [self setNeedsDisplay];
}

但這不起作用。 有什么建議嗎?

我有同樣的問題(使用Swift)。 我需要設置背景並立即顯示它,即使它減慢了用戶界面的速度。 解決方案是確保它在主線程上完成。

dispatch_async(dispatch_get_main_queue(), {
   testButton?.backgroundColor = .greenColor()
})

嘗試:

-(void)didDetectEvent:(id)sender {
    UIButton *btn = (UIButton *)sender;
    [btn setNeedsDisplay];
}

我假設它是在具有要管理的按鈕的通用視圖中實現的。

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

        [self addTarget:self action:@selector(didDetectEvent:) forControlEvents:UIControlEventAllTouchEvents];
    }
}


  -(void)didDetectEvent:(id)sender {
        [self setNeedsDisplay];
        [self performSelector:@selector(setNeedsDisplay) withObject:nil afterDelay:0.2];
}

這可行。 我不確定這是最佳解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM