0

いくつかのテキストとScrollViewへのリンクを含むラベルを追加しました。これらのリンク(ラベル内)をタップすると、デリゲートメソッドが呼び出され、ポップオーバーが表示され、いくつかの関連情報が表示されます。

しかし、問題はここから始まります。リンク以外の場所をタップすると、ポップオーバーが消えます。

UITapGestureRecognizerをScrollViewに追加すると、リンクのデリゲートメソッドが呼び出されません。

ラベルがリンクのタップを処理し、ScrollViewが他のタップを処理するにはどうすればよいですか?

私はそれが好きでした:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped)];
    [self.scrollView addGestureRecognizer:tap];

- (void)tapped
{
    if ([self.storyText.delegate respondsToSelector:@selector(attributedLabel:shouldFollowLink:)])

        [self.storyText.delegate performSelector:@selector(attributedLabel:shouldFollowLink:) withObject:self.storyText];
}

タップされたメソッドImがリンクをタップしているかどうかをチェックする場合、デリゲートを呼び出す必要がありますが、デリゲートは呼び出されません。私は何かが欠けていますか?

ここに画像の説明を入力してください

4

2 に答える 2

0

解決しました!解決策: まず、scrollView のカスタム クラスを作成し、UIScrollView からサブクラス化しました。2 番目にオーバーライドします

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

私のカスタムScrollViewクラスで。このメソッドでは、ポップオーバーを閉じるメソッドを呼び出しました。

しかし、重要な部分は、ポップオーバーが表示されるクラスの viewWillAppear メソッドで、自分自身をカスタム scrollView クラスに渡したことです。そうしないと、ポップオーバーを閉じるメソッドが機能しないためです (このクラスのオブジェクトが必要です)。

[self.scrollView initWithStoryViewController:self];

ここに画像の説明を入力

この画像は、この問題が発生したシナリオを示しています。

于 2013-01-21T12:45:06.867 に答える
0

ラベルの代わりにカスタム UIButton を使用するか、背景色が明確なカスタム UIButton をリンクの上に配置して、このボタンにアクションを与えることができます。

于 2013-01-21T05:16:27.090 に答える