我正在尝试创建自己的自定义UIScrollView,以便我可以将触摸事件从它传递给委托对象,该委托对象具有在scrollview内部绘制到imageview的逻辑。
如果我从类接口中删除委托变量和属性,它可以正常滚动视图。当我创建自定义协议委托时,它会构建但不会传递消息..
任何帮助表示赞赏
@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
答案 0 :(得分:1)
传递委托消息的UIScrollView方法可能使用(私有)ivar来访问委托,而不是每次都使用属性访问器。因此,当您使用自己的委托属性覆盖它们时,底层的scrollview委托永远不会被设置。
解决这个问题的一种方法是使用UIScrollView的delegate
和setDelegate:
实现来存储您的代理,而不是使用您自己的ivar。另一种方法是重命名您的财产以避免冲突。第三种方法是使scrollview中的视图响应触摸,而不是弄乱scrollview本身。
答案 1 :(得分:0)
为什么不让imageView处理触摸?