objective-c – 响应UIPickerView中的touchesBegan而不是UIView

前端之家收集整理的这篇文章主要介绍了objective-c – 响应UIPickerView中的touchesBegan而不是UIView前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个UIPickerView,在不使用时会逐渐消失到20%的alpha.我希望用户能够触摸选择器并将其淡入.

如果我在主视图上放置touchesBegan方法,我可以让它工作,但这仅在用户触摸View时才有效.我尝试了UIPickerView的子类化,并在那里有一个touchesBegan,但它没有用.

我猜它与Responder链有关,但似乎无法解决.

解决方法

一个多星期以来,我一直在寻找这个问题的解决方案.即使你的问题超过一年,我也在回答你,希望这会对别人有所帮助.

对不起,如果我的语言不是很技术,但我对Objective-C和iPhone开发很新.

子类化UIpickerView是正确的方法.但是你要使用Event:(UIEvent *)事件方法覆盖 – (UIView *)hitTest:(CGPoint)点.无论何时触摸屏幕,都会调用方法,并返回将对触摸作出反应的视图.换句话说,将调用其touchesBegan:withEvent:方法的视图.

UIPickerView有9个子视图!在UIPickerView类实现 – (UIView *)hitTest:(CGPoint)指向withEvent:(UIEvent *)事件不会返回self(这意味着touchesBegan:withEvent:你在子类中写的将不会被调用)但会返回一个子视图,正好是索引4处的视图(一个名为UIPickerTable的未记录的子类).

诀窍是使 – (UIView *)hitTest:(CGPoint)指向withEvent:(UIEvent *)事件方法返回self,这样你就可以控制touchesBegan:withEvent:,touchesMoved:withEvent:和touchesEnded:withEvent:methods.

在这些方法中,为了保持UIPickerView的标准功能,你必须记得再次调用它们,但是在UIPickerTable子视图上.

我希望这是有道理的.我现在无法编写代码,只要我在家,我就会编辑这个答案并添加一些代码.

猜你在找的C&C++相关文章