我有一個藍色背景的自定義UIButton
。 當我將手指拖過UIButton
時,我需要填充紅色背景顏色。當我將手指向後拉時,紅色應該消失。在拖動時在UIButton上填充背景顏色
我試着在UIGestureRecognizerStateEnded
狀態下使用UIPanGestureRecognizer
來實現。如果不在UIButton
之上添加其他視圖,我無法在按鈕背景中獲取紅色。
有沒有另一種方法可以實現呢?
我有一個藍色背景的自定義UIButton
。 當我將手指拖過UIButton
時,我需要填充紅色背景顏色。當我將手指向後拉時,紅色應該消失。在拖動時在UIButton上填充背景顏色
我試着在UIGestureRecognizerStateEnded
狀態下使用UIPanGestureRecognizer
來實現。如果不在UIButton
之上添加其他視圖,我無法在按鈕背景中獲取紅色。
有沒有另一種方法可以實現呢?
添加目標:
[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];
}
}
使用UIButton
的Sent Event properties
的改變拖時間顏色使用TouchDragEnter
和收回相同的顏色使用TouchCancel
。
可能對您有幫助嗎?
感謝您的時間。不改變觸摸事件中的背景顏色。背景顏色應該在拖動時進行實時繪製。這與通過光標選擇單詞相似。對不起,如果我的問題誤導你。 – selva
我編輯了我的答案。那是你想要做什麼?如果沒有,如果你編輯你的問題可能會有所幫助。 –