私は3つのUIViewを積み重ねています
UITableview
planeView
rootView
TableView が上部にあり、rootView が下部にあります。(TableView がその上にあるため、rootView は表示されません)
rootView に次のコードを実装しました
/*code in rootView*/
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {}
一番上のビュー、つまりTableViewがタッチまたは移動されたときにこれらの関数が呼び出されることを期待していますが、逆に関数は呼び出されませんでした。
rootViewメソッドが呼び出されるように、次のコードをTableViewに入れてみました
/*code in TableView so that the rootView methods are called(TableView is the subview of rootView)*/
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesBegan:touches withEvent:event];
[self.superview touchesBegan:touches withEvent:event];
}
予想通りそうしましたが、問題はTableViewデリゲートが好きなことです
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
呼び出されません。
TableView class(didSelectRow:) に実装された TableView デリゲートと rootView の touchesBegan:,touchesMoved.. 関数もそれに応じて呼び出されることを保証できる方法はありますか?
つまり、TableCell をクリックすると、(didSelectRow:atIndex) 関数が --> TableView に、(touchesBegan および touchesEnd) メソッドが -->rootView に呼び出されます。