如何在iphone中检测UIPickerView的选择指示器上的触摸



我正在iPhone应用程序中开发UIPickerview控件。我想检测UIPickerView的选择指示器上的触摸。请帮助我。现在我正在使用以下代码

UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(pickerViewTapGestureRecognized:)];
 [self.picker addGestureRecognizer:gestureRecognizer];
-(void)pickerViewTapGestureRecognized:(UITapGestureRecognizer *)gestureRecognizer
{
CGPoint touchpoint = [gestureRecognizer locationInView:gestureRecognizer.view.superview];
CGRect frame = self.picker.frame;
CGRect selectorFrame = CGRectInset(frame, 0.0, self.picker.bounds.size.height * 0.85/2.0);
if (CGRectContainsPoint(selectorFrame, touchpoint)) {
  }
}

从这里开始:响应触摸在UIPickerView而不是UIView 中开始

将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,这样您就可以控制触摸Began:withEvent:、触摸Moved:withEvent:和触摸Ended:withEvent:方法。

最新更新