Серьезные проблемы с получением сенсорных координат - PullRequest
0 голосов
/ 27 июля 2011

У меня есть простое приложение, которое показывает пользователю изображение (в UIImageView), посредством чего они касаются части экрана, а затем на следующем экране отображается то же изображение (в UIImageView), но теперь имеет «подпись» наложено на это. Проблема, с которой я столкнулся, заключается в том, что кажется, что координаты x, y, возвращаемые от прикосновений, не отображаются должным образом в UIImageView на втором экране.

Например, когда я касаюсь нижней части экрана, я получаю: X: 157.000000 Y: 358.000000

а низ экрана должен быть 480? так как мои размеры экрана: ВЫСОТА И ШИРИНА ЭКРАНА В X: 320.000000 Y: 480.000000. Это приводит к тому, что подпись будет размещена в РАЗНОМ месте, чем предполагалось пользователем.

Я использую следующий код для получения моих сенсорных координат:

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

    NSLog(@"TOUCH HAPPENED");
    UITouch *touch = [touches anyObject];
    CGPoint touchCoordinates = [touch locationInView:self.view];
    NSLog(@"X: %f   Y: %f",touchCoordinates.x, touchCoordinates.y);

}

Я использую следующий код для размещения «подписи» со значениями, полученными от прикосновения:

CGRect screenRect = [[UIScreen mainScreen] bounds]; 
        UIGraphicsBeginImageContext(screenRect.size);


        [pageImage drawInRect:CGRectMake(0, 0, screenRect.size.width, screenRect.size.height)]; // this is the original image

        NSLog(@"SCREEN HEIGHT AND WIDTH  AT   X: %f   Y: %f",screenRect.size.width, screenRect.size.height);


        NSLog(@"PLACING IT AT TOUCH COORDINATES  X: %f   Y: %f",sigLocation.x, sigLocation.y);
        UIImage *shieldLogo = [UIImage imageNamed:@"shield_bw.gif"];
        [shieldLogo drawInRect:CGRectMake(sigLocation.x, sigLocation.y, shieldLogo.size.width/2, shieldLogo.size.height/2)];
        [theSignature drawAtPoint:CGPointMake(sigLocation.x+24.000000, sigLocation.y) withFont:[UIFont fontWithName:@"Arial" size:8.0]];
        [theSignature2 drawAtPoint:CGPointMake(sigLocation.x+24.000000, sigLocation.y+ 8.000000) withFont:[UIFont fontWithName:@"Arial" size:8.0]];

        UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        [image setImage:resultingImage];

1 Ответ

3 голосов
/ 27 июля 2011

Возможно, проблема в том, что пользователь касается. Вы можете попробовать (как видно по этой ссылке )

UITouch * touch = [touches anyObject];
CGPoint pos = [touch locationInView: [UIApplication sharedApplication].keyWindow];
NSLog(@"Position of touch: %.3f, %.3f", pos.x, pos.y);

Это должно дать местоположение касания относительно экрана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...