1

私はかなり基本的な問題を抱えています。私は周りを見回しました(ここ、グーグルなど)が、これに対する解決策が見つかりませんでした:

私のView ControllerのviewDidLoadには、これがあります:

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(myfunc:)];

//I have a UIScrollView named "containerView"
//here's some code that creates an UIView in a variable named "myView"

//this works fine, I can see "myView" when I run it
[containerView addSubview:myView];

[myView addGestureRecognizer:longPress];

そして、私は同じクラスにこの関数を持っています:

- (void)myfunc:(UIRotationGestureRecognizer *)recognizer 
{
    NSLog(@"hola!"); //never runs
}

neverへの呼び出しNSLogは実行されません。私は何を間違っていますか?

編集

追加情報: タッチ イベントがサブビューに送信されないようです。ただし、すべてUIScrollViewにボタンを含むUIViewを追加しようとしましたが、ボタンはタッチイベントを正常に受け取るため、問題はプログラムで追加されたサブビューのみです。

4

3 に答える 3

2

奇妙なことに、UIScrollView 内に「コンテナ」UIView を追加してから、このコンテナ内に他のサブビューを追加すると、機能するようになりました。タッチ イベントがサブビューに送信されるようになりました。

于 2012-04-26T21:01:32.370 に答える
0

myFunc では、次のようなことをしなければならないと思います。

switch (reconiger.state)
{
    case UIGestureRecognizerBegin:
      //Do something when start recognizer
      break;
    case UIGestureRecognizerEnd:
      //Do something when end recognizer
      break;
}
于 2013-03-12T08:32:27.640 に答える
0

サブビューの前にスーパービューがタッチ シーケンスをインターセプトするにはどうすればよいですか?

TLDR:

[containerView setCanCancelContentTouches:NO]; 

ジェスチャ認識機能をスクロール ビューに追加するのと同じように行います。

も調べる

[containerView setDelaysContentTouches:NO];

上記の動作が正しくない場合。

詳細情報: http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIScrollView_Class/Reference/UIScrollView.html

于 2012-04-23T20:46:18.370 に答える