我使用UIStepper来更改在UITextField中显示的值,可以选择在UITextField中输入值进行编辑。
一切正常,但是有一个不需要的行为:只能按下对象本身的上半部分来编辑UITextField,因为下半部分中的触摸会被UIStepper吞噬。
我一直在寻找答案,但我没有找到。不过,我有一些提示。
UIStepper有2个按钮和1个ImageView,触摸在整个ImageView中被检测到(不可见或不可编辑)。
有什么想法吗?

发布于 2013-04-30 04:13:10
要解决这个问题,很可能需要子类化。您可以在UIStepper子类中重写pointInside:withEvent:并返回NO,除非严格在stepper的范围内:
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
return CGRectContainsPoint(self.bounds, point);
}发布于 2013-04-30 04:39:47
一种选择是将分步程序和文本字段都放在一个容器视图中,该视图覆盖-hitTest:withEvent:,以便在查询分步程序之前查询文本字段。如果文本字段显示命中,则返回一个指向文本字段的指针。如果没有,检查步进器,如果它说它被击中了,就返回它。
控件有时会伪装得比实际大,以便更容易触摸。使用前面的技术应该可以让您尽可能多地保留stepper的额外可触摸区域,而不会妨碍文本视图的使用。
https://stackoverflow.com/questions/12992512
复制相似问题