2012-06-08 2 views
0

다음은 UITextView에서 모서리를 그리는 코드입니다. .H 파일에서UIBezierPath containsPoint는 한 번만 작동합니다.

:

@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]; 
} 

제가 는 불리언 값을 제공 처음 경로 탭하면 예. 하지만 나중에 히트를 치기 위해 어떤 경로에도 가치를 부여하지 않습니다. 아무도 저에게 왜 그렇게 일어나는지 도울 수 있습니까?

+0

ARC를 사용하고 있습니까? 'upperLeft'와'upperRight'은 어떻게 선언/정의되어 있습니까? –

+0

예 ARC..UIBezierPath * upperLeft;를 사용하고 있습니다. UIBezierPath * upperRight; 이것은 .h 파일에서 경로를 선언하는 방법입니다. [UIBezierPath bezierPathWithArcCenter : CGPointMake (xCorner + 폭 - 마진 yCorner + 마진) 반경 : 5.5 startAngle로부터 0 endAngle : DEGREES_TO_RADIANS (360)를 시계 방향 : YES]; 이것은 경로의 정의입니다. –

답변

0

upperLeft 및 lowerRight를 저장하려고했으나 속성을 사용하지 않는 것으로 보입니다. 따라서 ARC는 값을 유지하여 도움을 줄 수 없습니다. 따라서 범위를 벗어나면 upperLeft와 lowerRight가 정의되지 않게됩니다. 나는 그것이 충돌하지 않는 것에 약간 놀랐다.

self.upperLeft=...self.lowerRight=...을 사용하는 경우 성공해야합니다.

+0

나는 당신이 말한대로 재산을 만들었지 만 여전히 효과가 없습니다. –

+0

원본 게시물을 편집하여 upperLeft 및 lowerRight 속성의 '.h' 파일 선언을 포함 할 수 있습니까? upperLeft와 lowerRight에서 바운딩 박스를 가져와 원하는 위치에 있는지 확인하고 터치 위치도 기록 할 수 있습니다. – gaige

+0

NSLog (@ "isResizingUL : % @", NSStringFromCGRect (upperLeft.bounds))를 추가했습니다. 처음에는 유효한 값을 얻지 만 두 번째로는 isResizingUL으로 나타납니다 : {{inf, inf}, {0, 0}} 왜 이런 일이 발생합니까? –