2012-01-26 7 views
1

iosアプリで、目的がcでxcodeを使用しています。私は、UIResponderを継承する別のクラスから継承したクラスを持っており、それにはビューが含まれています。私はサブクラス内にtouchesBeganを持っていますが、イベントはデバッグ/ devモードでアプリケーションを実行するときにのみ呼び出されます。私がプロダクション/リリースのビルドを行うとき、タッチイベントは呼び出されません。touchesBeganがuiresponderのサブクラスで無視されました

// Basic viewcontroller protocol 
@protocol SubViewController 
    - (void)viewDidAppear:(BOOL)animated; 
    - (void)viewDidDisappear:(BOOL)animated; 
    - (void)viewWillAppear:(BOOL)animated; 
    - (void)viewWillDisappear:(BOOL)animated; 
    - (void)viewDidLoad; 
    -(UIView *)view; 
@end 


@interface SubViewController : UIResponder<SubViewController> { 
} 

///////////////////////////////////////////////////////////////////////////////// 


// A custom subview controller 
// 

@interface mySubViewController : SubViewController { 

} 

と私はデバッグでこれを実行すると罰金ですが、タッチイベントは、リリースでは無視されたようmysubviewcontrollerクラス内で私は今

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    //some code and magic 
} 

を持っています。あなたのためにこれを明確にするのに役立つヒント、アイデアや質問をお聞かせください。おかげで事前に

編集:私はこの文書で見ました "スーパー(共通の使用パターン)を呼び出さずにこのメソッドをオーバーライドする場合は、スタブ(empy)としてのみ、タッチイベントを処理するための他のメソッドもオーバーライドする必要があります実装。 "他のすべてのタッチイベントでスタブされますが、リリースビルドに変更はありません

+0

'UUIesponder'から既に継承している' UIViewController'をサブクラス化しない特別な理由はありますか?あなたのカスタムUIResponderサブクラスがレスポンダーチェーンに適切に追加されていないと思われます。 – omz

+0

hmmサブクラスがレスポンダーチェーンに追加されているかどうかを確認するにはどうすればよいですか?またはそれを追加する正しい方法は何ですか?私はuiviewcontrollerをサブクラス化しない理由があったと確信していますが、私の人生のために傾けることは今それを考えると長い前に書かれていた。 – glogic

+1

[UIViewController'](http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html)ドキュメントの第3段落を参照してください。基本的には、あなたが管理しているビューとあなたの "View Controller"の 'nextResponder'をオーバーライドする必要があります。ビューはビューコントローラを返し、ビューコントローラはビ​​ューのスーパービューを返します。 – omz

答えて

0

UIViewControllerをサブクラス化していないので、レスポンダをレスポンダチェーンに手動で追加する必要があります。

UIViewControllerレスポンダチェーン内の位置は、ビューとビューのスーパービューの間にあるため、ビューと管理するコントローラの両方でnextResponderをオーバーライドする必要があります。ビューはコントローラを返し、コントローラはビ​​ューのスーパービューを返す必要があります。

関連する問題