1

UIButton のサブクラスを作成しtouchesBegan、 、touchesEnded、およびのメソッドを実装しましtouchesMovedた。私のコントロール内でタッチが発生するたびに、何らかのアクションを実行する必要があることをスーパービューに警告したいと思います。私は最初にこれを試しました:

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
  if(self.superview != nil)
  {
    [self.superview touchesMoved:touches withEvent:event];
  }
}

結果は奇妙でした: 最初の touchesMoved イベントはスーパービューに正しくバブルアップしますが、その後はそれ以上バブルアップしません。self.super と self.superview のポインター値を出力してみましたが、変化しないので、メモリに異常はありません。

次に、親ビュー コントローラー内のセレクターをSEL型としてカスタム コントロールに渡して、一種のコールバックを作成しようとしましたが、XCode はそれを好みませんでした (実行時に「認識されないセレクターがインスタンスに送信されました」というエラー メッセージが表示されました)。

コントロールからのイベントをインターセプトするためのプロトコル (デリゲート スタイル) を実装し、View Controller をそのタイプのデリゲートとして登録するだけです。考え?

4

0 に答える 0