减少 UIButton 的触控区域
Posted
技术标签:
【中文标题】减少 UIButton 的触控区域【英文标题】:Decrease Touch Area of UIButton 【发布时间】:2012-10-12 17:19:01 【问题描述】:我正在尝试减少 UIButton 的触摸区域。这甚至可能吗?当用户触摸按钮并将其触摸拖到按钮外时,触摸事件应在按钮图形结束时立即停止。不幸的是,该区域比实际图形大得多。我发现了很多关于如何增加面积而不是如何缩小面积的内容。
感谢您的帮助。
【问题讨论】:
为什么不改变按钮的大小以匹配图形的大小? @barley 我想他想说的是,即使按钮和图形大小相同,当您单击按钮并向外拖动时,按钮不会被按下,直到您获得一定距离。他希望它立即压抑。 @yuf 感谢您的解释。这听起来像是一个有趣的挑战:) 我同意:您必须从按钮上拖出取消按钮的距离太大了。我一直拖离按钮(至少是按钮本身高度的 2 倍)并且它仍然激活按钮。真气人! 【参考方案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];
这样做的缺点是,如果您离开按钮并再次返回,按钮将不会变为活动状态。但除此之外,我认为它应该可以正常工作。
【讨论】:
以上是关于减少 UIButton 的触控区域的主要内容,如果未能解决你的问题,请参考以下文章