拖动时在 UIButton 上填充背景颜色

Posted

技术标签:

【中文标题】拖动时在 UIButton 上填充背景颜色【英文标题】:Fill background color on UIButton while dragging 【发布时间】:2016-06-30 01:00:06 【问题描述】:

我有一个蓝色背景的自定义UIButton。 当我将手指拖到UIButton 上时,我需要填充红色背景色。当我向后拖动手指时,红色应该会消失。

我尝试在UIGestureRecognizerStateEnded 状态下使用UIPanGestureRecognizer 实现。如果不在 UIButton 之上添加另一个视图,我无法在按钮背景中获得红色。

还有其他方法可以实现吗?

【问题讨论】:

【参考方案1】:

使用UIButtonSent Event properties 更改拖动时间颜色使用TouchDragEnter 和收回相同的颜色使用TouchCancel

对你有帮助吗?

【讨论】:

【参考方案2】:

添加目标:

[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 上填充背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

iPad上操作表的背景颜色

UIButton adjustsImageWhenHighlighted 属性与背景颜色

使用清晰的背景颜色使 UIButton 内容完全可点击

jQuery:悬停链接时在div中动画(淡化)背景颜色或图像?

如何更改 UIButton 的背景颜色?

突出显示时更改 UIButton 的背景颜色