我正在尝试创建自己的自定义UIScrollView,这样我就可以将触摸事件从它传递到一个委托对象,该对象具有绘制到滚动视图内的图像视图的逻辑。
如果我从类接口中删除委托变量和属性,它就会像普通的滚动视图一样正常工作。当我让它成为我的自定义协议委托时,它会构建但不会传递消息。
感谢您的任何帮助
@class DrawableScrollView;
@protocol DrawableScrollViewDelegate <UIScrollViewDelegate>
- (void)touchesBegan:(DrawableScrollView *)drawableScrollView touches:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesMoved:(DrawableScrollView *)drawableScrollView touches:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(DrawableScrollView *)drawableScrollView touches:(NSSet *)touches withEvent:(UIEvent *)event;
@end
@interface DrawableScrollView : UIScrollView {
id<DrawableScrollViewDelegate> delegate;
}
@property (nonatomic, assign) IBOutlet id<DrawableScrollViewDelegate> delegate;
@end发布于 2011-04-04 09:27:59
传递委托消息的UIScrollView方法可能使用(私有) ivar来访问委托,而不是每次都使用属性访问器。因此,当您使用自己的委托属性重写这些属性时,根本不会设置底层的scrollview委托。
一种解决方法是使用UIScrollView的delegate和setDelegate:实现来存储您的委托,而不是使用您自己的ivar。另一种方法是重命名您的属性以避免冲突。第三种方法是让滚动视图内部的视图对触摸做出响应,而不是干扰滚动视图本身。
发布于 2011-06-04 15:46:52
为什么不让imageView来处理这些问题呢?
https://stackoverflow.com/questions/5533567
复制相似问题