2013-09-23 3 views
0

Нижеприведенный код работает нормально в ARC, но он не работает в не дуге, на самом деле я хочу реализовать этот свободный рисунок руки в не дуговом коде. Проблема в том, не дуги указатель находится на одном месте, и линия рисунка в другой place.here является снимок экрана для
referenceСвободный рисование рисунка не работает в не дуге

Код: в .h

UIImageView *drawImage; 
CGPoint location; 
CGPoint lastPoint; 
CGPoint moveBackTo; 
CGPoint currentPoint; 
NSDate *lastClick; 
BOOL mouseSwiped; 
NSMutableArray *latLang; 
    /// 
- (void)viewDidLoad 
{ 
[super viewDidLoad]; 

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
drawImage.image = [defaults objectForKey:@"drawImageKey"]; 
drawImage = [[UIImageView alloc] initWithImage:nil]; 
drawImage.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height); 
[self.view addSubview:drawImage]; 
drawImage.backgroundColor = [UIColor blueColor]; 
// Do any additional setup after loading the view, typically from a nib. 
} 

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
UITouch *touch = [[event allTouches] anyObject]; 

if ([touch tapCount] == 2) { 
    drawImage.image = nil; 
} 


location = [touch locationInView:self.view]; 
lastClick = [NSDate date]; 

lastPoint = [touch locationInView:self.view]; 
NSLog(@"LastPoint:%@",NSStringFromCGPoint(lastPoint)); 
lastPoint.y -= 0; 
mouseSwiped = YES; 
[super touchesBegan: touches withEvent: event]; 


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

UITouch *touch = [touches anyObject]; 
currentPoint = [touch locationInView:self.view]; 
UIGraphicsBeginImageContext(CGSizeMake(self.view.frame.size.width, self.view.frame.size.height)); 
[drawImage.image drawInRect:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound); 
CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 8.0); 
CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 0, 1, 0, 1); 
CGContextBeginPath(UIGraphicsGetCurrentContext()); 
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y); 
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y); 
CGContextStrokePath(UIGraphicsGetCurrentContext()); 


[drawImage setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
drawImage.image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
if (mouseSwiped) { 

} 
lastPoint = currentPoint; 

[self.view addSubview:drawImage]; 
} 

ответ

0

Я полагаю проблема заключается в автоматическом выпуске lastClick. Проще всего можно заменить:

NSDate *lastClick; 

с

@property (strong, nonatomic) NSDate *lastClick; 

... Хорошо, я спутал ARC и не ARC. Как у вас есть проблемы, не ARC, то вы должны сохранить дату:

lastClick = [[NSDate date] retain]; 

, а затем добавить обработчик для touchesEnd с реализацией:

[lastClick release]; 
lastClick = nil; 
+0

Еще я столкнулся же problen TheRook – kmReddy

 Смежные вопросы

  • Нет связанных вопросов^_^