0

私は実際にMSPaintのように機能するアプリ(線を描くものなど...)に取り組んでいます。基本的にユーザーが描画する白いUIViewを取得しました。この UIView の上に、グレーの UIImage を 0.4 アルファで設定します。このUIImageをあぶらとり紙として使いたいです。ユーザーがこの領域に手のひらを置いたときにタッチを無効にすることで、より快適に描画できるようにするという考えです(マルチタッチが無効になり、この「あぶらとり紙」を使用すると、誤って手のひらで何かを描くことはありません... )

UIImage を前面、ビューの上に持ってきても、この UIImage でのユーザー操作を無効にしても、UIView に描画することは可能です。、UIImageの背後にあります(ちょっと変です!)

何が起こっているのかわかりません。なぜなら、画像が透明で、UIImage によってオーバーレイされていても、「背後」の UIView がまだアクティブであるように見えるからです。

どんな助け/指示/アイデアも大歓迎です! ありがとうございました :-)

4

5 に答える 5

4

あなたは実際には反対のことをしたいかもしれません。ユーザーの操作やタッチを無効にすると、ビューは基本的にタッチから見えなくなり、次のビューに渡されます。

あなたの場合、ビューでそれらのタッチをキャッチしたいので、 userInteractionEnabled が必要です。

于 2012-04-27T13:04:58.240 に答える
4

UIImage の「userInteractionEnabled」プロパティを「NO」に設定しましたか?

于 2012-04-27T12:37:14.380 に答える
2

UIImageではなくUIImageViewでのユーザー操作を無効にする必要があり、機能するはずです。

編集:

または、卑劣で、その上に空のビューを追加することもできます。同じフレームサイズを使用して、完全に重なるようにします。あなたはあなたが必要とするすべてを見ることができるでしょう、そしてそれはそれのサブビューではないので、相互作用はなく、タッチは登録されますが効果はありません。:P

コードの一部を投稿しない限り、これ以上のアイデアはありません...

于 2012-04-27T13:03:51.897 に答える
1

よし、やりたいことができた!わーい!

私は3つの異なるクラスを取得しました:

  • StrokesViewController (UIViewController) - ビュー コントローラー

  • StrokesView (UIView) - ユーザーがストロークを描画するビュー。

  • BlottingPaper (UIView) - あぶらとり紙。

3つすべてに「リンク」されたXIBファイルを取得しました。

「BlottingPaper」と呼ばれるこの新しいクラスを作成し、UIView と入力しました。.h および .m ファイルは実際には空です (#import < Foundation/Foundation.h > をインポートします)。BlottingPaper ではユーザー操作が有効になっています。このクラスでは排他的なタッチは使用しません。

XIB ファイルでは、StrokesView の上にビューを配置しました。BlottingPaper にリンクします (必要に応じてアルファを変更し、blablabla...)

以上です!手のひらを置くと、手のある部分には何も描画されませんが、残りの StrokesView には指で描画できます。

于 2012-04-30T09:18:45.903 に答える
0

Dancreek の応答に加えて、buvard.userInteractionEnabled = YES;対話をキャプチャするように設定する必要があります。

buvard.exclusiveTouch = YES;また、buvard がタッチ イベントを受け取る唯一のビューになるように設定する必要があります。

buvard を削除するときはbuvard.exclusiveTouch = NO;、他のビューがタッチを受信できるように設定する必要があります。

于 2012-04-27T15:44:49.700 に答える