2011-05-12 8 views
2

initWithFrame:をすっきりさせ、MKMapViewとUIScrollViewを無効にして通知リスナを追加して削除し、外部デバイスとの接続を監視します。スウィズリングinitWithFrame:NIB内のオブジェクトでは機能しません

これはコードで作成したビューには効果的ですが、XIBで宣言すると呼び出されません。私はこのサポートをハードコーディングしたくないので、継承の代わりにスウィズルを使用しています。ターゲットごとに追加できるようにしたいのです。

これらのオブジェクトをフックして、これらのオブジェクトのすべてのオブジェクトにジェスチャレコグナイザを追加できるようにするにはどうすればよいですか?

答えて

4

NIBからインスタンス化されたビューオブジェクトは、初期化するために-initWithCoder:を使用しています。そのため、代わりにそれを振り回してみてください。

+0

恐ろしい!私のiOS fuにもう1つのおしゃべりを追加してくれてありがとう。 –

+0

NB: "NSCoding"に準拠していないものについては、Bavariousはもっと適切かもしれません。 – Wevah

+1

'-initWithCoder:'または '-init'のいずれかを受け取っている整形されていないnibオブジェクトは、[Resource Programming Guide](http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs /CocoaNibs.html)。 –

2

IOSで、nibファイルからロードされたすべてのオブジェクトは、受信のいずれか-initWithCoder: nibファイルから非整列化した場合(対応するクラスがNSCodingプロトコルに準拠していない場合)または-init(対応するクラスはNSCodingプロトコルに準拠している場合) 。これは、カスタムビューが-initWithFrame:を受け取り、他のオブジェクトが-initWithCoder:または-initのいずれかを受け取るMac OS Xとは異なる動作です。

クラスはUIViewNSCodingプロトコルに準拠)から継承しているため、-initWithCoder:を入れ替える必要があります。

+0

素晴らしい、ありがとう。 –

関連する問題