Iphone drawRect和setNeedsDisplay永远不会被调用

Iphone drawRect和setNeedsDisplay永远不会被调用,iphone,ipad,uigesturerecognizer,Iphone,Ipad,Uigesturerecognizer,我添加了一个uiview(带有uimageview的holderview)作为子视图,并使用 imageview=[[UIImageView alloc]initWithFrame:[holderView frame]]; [imageview setImage:cppobject->OutputImage]; imageview.contentMode=UIViewContentModeScaleAspectFit [holderView addSubview:imageview]; hold

我添加了一个uiview(带有uimageview的holderview)作为子视图,并使用

imageview=[[UIImageView alloc]initWithFrame:[holderView frame]]; [imageview setImage:cppobject->OutputImage]; imageview.contentMode=UIViewContentModeScaleAspectFit

[holderView addSubview:imageview];
holderView.contentMode = UIViewContentModeScaleAspectFit ;

UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scale:)];
[pinchRecognizer setDelegate:self];
[holderView addGestureRecognizer:pinchRecognizer];
[pinchRecognizer release];

UIRotationGestureRecognizer *rotationRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotate:)];
[rotationRecognizer setDelegate:self];
[holderView addGestureRecognizer:rotationRecognizer];
[rotationRecognizer release];

panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)];
[panRecognizer setMinimumNumberOfTouches:1];
[panRecognizer setMaximumNumberOfTouches:1];
[panRecognizer setDelegate:self];
[holderView addGestureRecognizer:panRecognizer];
holderView.tag=101;
[self.view addSubview:holderView];
[holderView sizeToFit];
[self AddInformation];
[holderView retain];
[self retain];
然后在装甲识别器功能(移动)中,我想使用

         UIPanGestureRecognizer *gR = (UIPanGestureRecognizer *) sender ; 


        NSValue *value = [NSValue valueWithCGPoint: [gR locationInView:gR.view]]; 





        [Points addObject:value];


        [holderView setNeedsDisplay];

        NSLog(@"End of measuring") ; 
我将使用点中的点在中的所有子视图上方绘制线

-(void)drawRect:(CGRect)rect { NSLog(@“已输入绘制矩形”)

if(测量){
[[UIColor redColor]设置行程];
UIBezierPath*pathToDraw=[UIBezierPath bezierPath];
对于(int n=1;n<[点数]-1;n++){
NSValue*value=[点对象索引:(NSInteger)n];
CGPoint point=[value CGPointValue];
[路径绘制移动点:点];
值=[点对象索引:(NSInteger)n+1];
点=[value CGPointValue];
[pathToDraw addLineToPoint:point];
}
[路径绘制笔划];
}
}


问题是[holderView setNeedsDisplay];决不要调用或激发drawRect任何建议或帮助,因为您需要将UIView子类化,并在子类中实现drawRect


然后在创建holderview时,确保实例化的是子类UIView,而不是默认UIView。

您需要子类UIView并在子类中实现drawRect

然后在创建holderview时,确保实例化的是子类UIView,而不是默认UIView

if (Measuring) {

    [[UIColor redColor] setStroke];

    UIBezierPath *pathToDraw = [UIBezierPath bezierPath]; 

    for (int n = 1; n < [Points count] - 1 ; n++) { 

    NSValue * value = [Points objectAtIndex:(NSInteger)n];

        CGPoint  point = [value CGPointValue]; 

        [pathToDraw moveToPoint:point];


        value = [Points objectAtIndex:(NSInteger)n+1];

        point = [value CGPointValue];

        [pathToDraw addLineToPoint:point];



    }



    [pathToDraw stroke];







}