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 をそのタイプのデリゲートとして登録するだけです。考え?