2009-05-24 10 views
2

カスタマイズされたUIImageViewとUIImageView自体のすべてのスーパービューにuserInteractionEnabled = YESが設定されていることを確認しました。私のUIImageViewサブクラスがタッチイベントを受け取らない理由は何ですか?

また、すべてのビューとサブビューにはuserInteractionEnabled = YESがあります。

しかし、私はUIImageViewをクリックしたときに、いくつかの理由で、これらが呼び出されることはありません取得:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
NSLog(@"check!"); 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
NSLog(@"other check"); 
} 

私はいくつかのサブビューのためのグループとして動作するのUIViewを持っています。それは問題になることができますか?

+0

touchesBegunはtouchesBeganにする必要がありますが、それはちょうどタイプミスでしょうか? – Kriem

答えて

1

正しいタイプのセレクタ名は 'touchesBegan'です。このビューをプログラム的にまたはペン先から追加していますか?

+0

あなたは誤植でした。訂正されました! – Thanks

1

touchesBeguntouchesBeganである必要がありますが、それはちょうどタイプミスだと思いますか?

Depsite that、は、通常は通過しません。ストレスがかかるCPUを示します。 Instrumentsでアプリのパフォーマンスをテストしてみてください。

+0

はい、それはタイプミスでした。それを修正しました! – Thanks

2

これはちょうど推測です - ビュー階層のどこかにUIScrollViewがありますか? UIScrollViewsは通常のビューのようなタッチイベントを渡さないので、サブクラス化してカスタムtouchesBeganメソッドを実装する必要があります。あなたはそのことについての情報を見つけることができますhere - 私は私の頭を傷つけ、グーグルが初めて遭遇したときに何時間も問題を起こしました。

+0

このような状況で修正されたのは、おそらくユーザーのやりとりを無効にするためですか? – elliotrock

2

私は次のような問題を考え出ししばらく:私はUIViewのが唯一のことを移動することにより、一度にすべてを移動できるように

私は、私が一緒のグループにいくつかのUIImageViewsを使用するUIViewを持っていました。 clipsToBoundsではなく、UIView 0.01 x 0.01を大きくしました。スーパービューの範囲外に描画していたサブビューをクリックすると、UIView、これらのサブビューで受け取ったタッチイベントはありません。タッチイベントがあるかどうかは分かりません。

同じ問題がある場合は、タッチがスーパービューに収まる範囲にあることを確認してください。私の場合、UIViewのグループ分けを大きくしてタッチ感知領域を大きくしました。その後、それは働いた。 Appleはドキュメンテーションのどこかで、サブビューがスーパービューの外に出るかもしれないが、スーパービューの四角形で起こった場合にのみ、タッチイベントが認識されることをAppleが言及していたことを少し覚えています。

関連する問題