我希望能够在我的子视图上绘画,或者换句话说:拥有一个不会阻挡事件的叠加层。到目前为止,我发现: - drawRect中的任何指令都绘制在子视图下方, - 在顶部块事件上放置透明的UIView。
我可以尝试另一种技巧吗?
答案 0 :(得分:0)
在顶部使用透明的UIView,并在IB中取消选中该视图的“User Interaction Enabled”,然后输入事件将转到其下方的控件。
或者,在代码中执行:
UIView *overlayView = [[UIView alloc] init...];
overlayView.userInteractionEnabled = NO;
答案 1 :(得分:0)
要解决此问题,您需要转发hitTest事件。将下面的代码添加到您的项目中,将UIImageView添加到您的界面,将其Class设置为ClickThroughImageView并将“onTopOf”插座连接到图像下方的任何UIView。
ClickThroughImageView.h文件:
#import <Foundation/Foundation.h>
@interface ClickThroughImageView : UIImageView
{
IBOutlet UIView *onTopOf;
}
@property (nonatomic, retain) UIView *onTopOf;
@end
ClickThroughImageView.m文件
#import "ClickThroughImageView.h"
@implementation ClickThroughImageView : UIImageView
@synthesize onTopOf;
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
return [onTopOf hitTest:point withEvent:event];
}
@end