【问题标题】:Decrease Touch Area of UIButton减少 UIButton 的触控区域
【发布时间】:2012-10-12 17:19:01
【问题描述】:

我正在尝试减少 UIButton 的触摸区域。这甚至可能吗?当用户触摸按钮并将其触摸拖到按钮外时,触摸事件应在按钮图形结束时立即停止。不幸的是,该区域比实际图形大得多。我发现了很多关于如何增加面积而不是如何缩小面积的内容。

感谢您的帮助。

【问题讨论】:

  • 为什么不改变按钮的大小以匹配图形的大小?
  • @barley 我想他想说的是,即使按钮和图形大小相同,当您单击按钮并向外拖动时,按钮不会被按下,直到您获得一定距离。他希望它立即压抑。
  • @yuf 感谢您的解释。这听起来像是一个有趣的挑战:)
  • 我同意:您必须从按钮上拖出取消按钮的距离太大了。我一直拖离按钮(至少是按钮本身高度的 2 倍)并且它仍然激活按钮。真气人!

标签: ios cocoa-touch ios5


【解决方案1】:

我想出了一个解决方案。您可以继承 UIButton 并覆盖 touchesMoved: 以便它识别触摸在按钮之外时结束。这是我的sn-p。

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch * touch = [touches anyObject];
    CGPoint touchPoint = [touch locationInView:self];

    if(!CGRectContainsPoint(self.bounds, touchPoint))
    {
        [super touchesEnded:touches withEvent:event];
    }
    else
    {
        [super touchesMoved:touches withEvent:event];
    }
}

这样做的缺点是,如果您离开按钮并再次返回,按钮将不会变为活动状态。但除此之外,我认为它应该可以正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 2015-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多