もう少し調査した結果、UIScrollView にはデリゲート プロトコルが組み込まれていることがわかりました。つまり、サブクラス化する必要はまったくありません。
ビュー コントローラーのヘッダー ファイルで、次の行を見つけます。
@interface MyViewController : UIViewController {
それを次のように変更します。
@interface MyViewController : UIViewController <UIScrollViewDelegate> {
Interface Builder を使用していると仮定して、それを開いてスクロール ビュー オブジェクトを見つけます。それを選択し、接続インスペクターを開き、「デリゲート」アウトレットをView Controllerに接続します。Xcode に戻り、View Controller の実装ファイルを開きます。メソッドを追加します。
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
NSLog(@"Here is where you do whatever it is that you're trying to do!");
}
それだけです。さらに明確にする必要がある場合はお知らせください。
私の答えの以前のバージョン:
これを行う最善の方法は、デリゲート システムを使用することです。スクロールビューには次のようなプロパティがあります。
@property(nonatomic,assign) id<MyScrollViewDelegate> delegate;
次に、デリゲートのプロトコルを次のように定義できます。
@protocol MyScrollViewDelegate <NSObject>
- (void)methodName;
@end
注: プロパティ行の前にデリゲートへの前方参照を置き、その後でメソッドを定義する必要があります。それの前方参照はただ
@protocol MyScrollViewDelegate;
.
ビュー コントローラーのヘッダー ファイルで、スクロール ビューのヘッダーをインポートしてから、オブジェクトの親クラスを から に変更し
UIViewController
て
UIViewController
<MyScrollViewDelegate>
ください。
次に、ビュー コントローラーでスクロール ビューを作成するときに、そのデリゲート プロパティを に設定します (UI を作成する方法である場合は、Interface Builder でこれを行うことができます。その場合、型の前self
に必ずIBOutlet
キーワードを追加してください。id
あなたの
@property
。)
最後に、スクロール ビューからビュー コントローラーを呼び出すには、次のコードを実行します。
[self.delegate methodName];
以上です!