0

我创建了一个条形图。如果您点击单个栏,它将创建一个新的 UIView 显示一些信息。

我希望能够将手指拖过栏并弹出该信息视图。

如何处理这种类型的触摸事件?它不是按,而是当触摸刚刚进入酒吧区域时?

每个栏都是一个 UIView,带有一个 UIControl 来处理触摸事件:

UIControl *control = [[UIControl alloc] init];
control.translatesAutoresizingMaskIntoConstraints = FALSE;
[control addTarget:self action:@selector(tapDetected:) forControlEvents:UIControlEventTouchUpInside];

[barView addSubview:control];

[barView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[control]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(control)]];
[barView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[control]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(control)]];

我尝试将 to 更改forControlEvents:UIControlEventTouchDown但与UIControlEventTouchUpInside.

4

1 回答 1

0

UIControlEventTouchDragEnter应该做你正在寻找的东西。从 UIControl 类参考:

UIControlEventTouchDragEnter
手指被拖入控件边界的事件。
在 iOS 2.0 及更高版本中可用。
在 UIControl.h 中声明。

编辑
当然,可能导致问题的另一件事是您UIControl直接实例化对象,这是您不应该做的。从UIControl类参考

您不能UIControl直接使用该类来实例化控件。相反,它为所有子类定义了公共接口和行为结构。

的主要作用UIControl是定义一个接口和基本实现,用于准备动作消息并在某些事件发生时最初将它们分派到它们的目标。

尝试UIButton改用,适当设置属性以使其行为不那么按钮式,并查看您的事件是否被触发。

于 2013-05-01T16:53:21.260 回答