2011-02-25 7 views
0

UScrollviewをサブクラス化しようとしましたが、デフォルトのUIScrollviewデリゲートメソッドが失われてしまいます。私はサブクラスを作成するときに、デフォルトのUIScrollViewdelegateメソッドを失います

#import <UIKit/UIKit.h> 
@protocol myscrollviewDelegate <NSObject> 
-(void) myscrollview_return; 
@end 

@interface myscrollview : UIScrollView <UIScrollViewDelegate> { 
     id<myscrollviewDelegate> delegate; 
} 

@property(nonatomic, assign) id<myscrollviewDelegate> delegate; 

@end 
  • (無効)scrollViewDidEndDecelerating:(UIScrollViewの*)scrollView

たときに、スクロールと呼ばれることはありません飽きません。

何が問題なのですか。私は、UIScrollviewをサブクラス化し、追加のデリゲートを追加することができ、同じ時間に元のデリゲートを維持できますか?

答えて

1

UIScrollViewには既にデリゲートプロパティがあるため、プロパティを追加するのではなく、オーバーライドしています。新しいプロパティを使用してデリゲートを設定すると、参照は元のUIScrollViewのプライベートインスタンス変数ではなく、追加したインスタンス変数に格納されます。

私の理論は、UIScrollViewの実装がプロパティを使用せずにインスタンス変数にアクセスするということです。私はそれを確認していませんが、新しいivarを追加してdelegateプロパティをオーバーライドしないようにしてください。

-1

これは、id delegateを使用してデリゲートメソッドを実装するためです。だから私は そのようにデリゲートの名前を変更します。代わりに「delegateSomeClassは」など 今UIScrollViewの代表団方法が

を呼び出すように、デリゲートの使用に他の名前を使用すると、それがクリアされます:)

0

をあなたは二デリゲートプロパティを作成せずにこれを行うことができます願っています。

UIScrollViewDelegateから

まず、ご使用のデリゲートプロトコルの継承:

@interface myscrollview : UIScrollView <UIScrollViewDelegate> 
@property(nonatomic, assign) id<myscrollviewDelegate> delegate; 

を、キーがない合成することである。そして、

@protocol myscrollviewDelegate <NSObject, UIScrollViewDelegate> 

、あなたのクラスのためにあなたのヘッダー内のデリゲートのプロパティを宣言むしろあなたの実装ファイルで動的にします。

@implementation myscrollview 
@dynamic delegate; 
... 
関連する問題