2016-06-30 65 views
0

我有一個藍色背景的自定義UIButton。 當我將手指拖過UIButton時,我需要填充紅色背景顏色。當我將手指向後拉時,紅色應該消失。在拖動時在UIButton上填充背景顏色

我試着在UIGestureRecognizerStateEnded狀態下使用UIPanGestureRecognizer來實現。如果不在UIButton之上添加其他視圖,我無法在按鈕背景中獲取紅色。

有沒有另一種方法可以實現呢?

回答

0

添加目標:

[button addTarget: self 
      action: @selector(buttonTouchStarted:withEvent:) 
forControlEvents: UIControlEventTouchDragEnter | UIControlEventTouchDown]; 
[button addTarget: self 
      action: @selector(buttonTouchEnded:withEvent:) 
forControlEvents: UIControlEventTouchDragExit | UIControlEventTouchUpInside | UIControlEventTouchCancel]; 

並重置控件事件處理一個紅色的覆蓋圖:

- (void) buttonTouchStarted:(UIButton *)button withEvent:(UIEvent *)event { 
    CGPoint location = [[event touchesForView:button].anyObject locationInView:button]; 

    UIView *redView = [button viewWithTag:42]; 
    if (! redView) { 
     // Install a red overlay 
     redView = [[UIView alloc] initWithFrame:CGRectZero]; 
     redView.backgroundColor = [UIColor redColor]; 
     redView.alpha = 0.5f; 
     redView.tag = 42; 

     // IMPORTANT: We don't want this overlay view to block touches 
     redView.userInteractionEnabled = NO; 

     [button addSubview:redView]; 
    } 

    CGRect frame = button.bounds; 
    frame.size.width = location.x; 
    redView.frame = frame; 
} 

- (void) buttonTouchEnded:(UIButton *)button withEvent:(UIEvent *)event { 
    UIView *redView = [button viewWithTag:42]; 
    if (redView) { 
     [redView removeFromSuperview]; 
    } 
} 
+0

感謝您的時間。不改變觸摸事件中的背景顏色。背景顏色應該在拖動時進行實時繪製。這與通過光標選擇單詞相似。對不起,如果我的問題誤導你。 – selva

+0

我編輯了我的答案。那是你想要做什麼?如果沒有,如果你編輯你的問題可能會有所幫助。 –

0

使用UIButtonSent Event properties的改變拖時間顏色使用TouchDragEnter和收回相同的顏色使用TouchCancel

可能對您有幫助嗎?