UIBezierPath containsPoint只能运行一次

时间:2012-06-08 08:59:42

标签: objective-c ios cocoa-touch ipad uibezierpath

以下是我在UITextView上绘制角落的代码。

在.h文件中:

    @property(nonatomic,strong)  UIBezierPath *   upperLeft;
    @property(nonatomic,strong)  UIBezierPath *   upperRight;

-  (void)drawRect:(CGRect)rect
{

 upperLeft = [UIBezierPath bezierPathWithArcCenter:CGPointMake(xCorner + margin, yCorner + margin)
                                                   radius:5.5
                                               startAngle:0
                                                 endAngle:DEGREES_TO_RADIANS(360)
                                                clockwise:YES];
        [[UIColor blackColor]setFill];
        [upperLeft fill];
        [upperLeft closePath];

upperRight = [UIBezierPath bezierPathWithArcCenter:CGPointMake(xCorner+ widths - margin, yCorner + margin)
                                                radius:5.5
                                            startAngle:0
                                              endAngle:DEGREES_TO_RADIANS(360)
                                             clockwise:YES];
    [[UIColor blackColor]setFill];
    [upperRight fill];
    [upperRight closePath];
}

-  (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

     touchStart  =  [[touches anyObject] locationInView:self];

    isResizingUL = [upperLeft containsPoint:touchStart];
    isResizingUR= [upperRight containsPoint:touchStart];
}

当我第一次点击路径时,它给出了Bool值为yes。但是对于后来的命中,它给任何路径都赋予NO值。即使在路径上击中。任何人都可以帮助我为什么会这样。

1 个答案:

答案 0 :(得分:0)

看起来你正试图存储upperLeft和lowerRight,但是你没有使用该属性,因此ARC不会通过保留值来帮助你。因此,当您超出范围时,upperLeft和lowerRight将变为未定义。我有点惊讶它没有崩溃。

如果您使用self.upperLeft=...self.lowerRight=...,您应该会成功。