アプリの設計を大まかに失敗したような気がします。現在、1 つのコントローラー、App Delegate、2 つの UIView (1 つは Scrollview のサブクラス)、およびコントローラー用の 1 つの nib があります。
IB では、ファイル所有者のクラスを MusicGridController に設定し、UIView のクラスを MusicGridView に設定しました。したがって、これらのクラスのインスタンスは nib によってインスタンス化されますよね? 次に、MusicGridView の上に重ねたい UIScrollView があります。アプリデリゲートでは、これを行いました:
@synthesize window;
@synthesize viewController;
@synthesize scrollView;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Override point for customization after app launch
//[application setStatusBarHidden:YES animated:NO];
//[window addSubview:viewController.view];
scrollView.contentSize = CGSizeMake(480, 480);
scrollView.showsHorizontalScrollIndicator = NO;
scrollView.showsVerticalScrollIndicator = NO;
scrollView.alwaysBounceVertical = NO;
scrollView.alwaysBounceHorizontal = NO;
// scrollView.maximumZoomScale = 4.0;
// scrollView.minimumZoomScale = 0.75;
scrollView.delegate = self;
// [viewController.view addSubview:scrollView];
[window addSubview:scrollView];
[scrollView addSubview:viewController.view];
[window makeKeyAndVisible];
}
したがって、scrollView サブクラスをウィンドウに追加し、次に Controller のビューを scrollView のサブビューとして追加します。
私は基本的にアーキテクチャを台無しにしていると思います。これまでユーザーと対話するほとんどすべてのコードは MusicGridView にあり、コントローラーは文字通り何もしません。
私が今直面している問題は、タッチ イベントを UIScrollview から MusicGridView インスタンスに渡す必要があることですが、それを適切なインスタンスに渡す方法がわかりません。
理想的には、おそらく MusicGridView を UIScrollView サブクラスの init メソッドにロードし、UIView を UIScrollView サブクラスのインスタンスにする必要があると思います。それはうまくいくでしょうか?