0

棒グラフを作成しました。個々のバーをタップすると、情報を表示する新しい UIView が作成されます。

バーを横切って指をドラッグし、その情報ビューをポップアップ表示できるようにしたいと考えています。

そのタイプのタッチイベントを処理するにはどうすればよいですか? 押すのではなく、タッチがバーの領域に入ったときですか?

各バーは、タッチ イベントを処理する UIControl を持つ UIView です。

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)]];

を に変更してみforControlEvents:ましUIControlEventTouchDownたが、 と同じように動作していUIControlEventTouchUpInsideます。

4

1 に答える 1

0

UIControlEventTouchDragEnterあなたが探していることをするべきです。UIControl クラス リファレンスから:

UIControlEventTouchDragEnter
指がコントロールの境界内にドラッグされるイベント。
iOS 2.0 以降で利用できます。
UIControl.h で宣言されています。

EDIT
もちろん、おそらく問題を引き起こしているもう1つのことは、UIControlオブジェクトを直接インスタンス化していることです。これは、行うべきではありません。UIControlクラスリファレンスから:

UIControlクラスを直接使用してコントロールをインスタンス化することはできません。代わりに、そのすべてのサブクラスに共通のインターフェイスと動作構造を定義します。

の主な役割はUIControl、アクション メッセージを準備し、特定のイベントが発生したときにターゲットに最初にディスパッチするためのインターフェイスと基本実装を定義することです。

UIButton代わりに、プロパティを適切に設定して動作をボタンのようにしないで使用し、イベントが発生するかどうかを確認してください。

于 2013-05-01T16:53:21.260 に答える