Точки соприкосновения iPad/iPhone могут произойти Неправильно из-за Калибровки?

У меня есть приложение для iPad, которое использует целый экран (то есть, UIStatusBarHidden установлен верный в файле Info.plist). Кадры главного окна и основного представления установлены на (0, 0, 768, 1024). Основное представление имеет мультисенсорный, включил.

Контроллер представления имеет этот код для обработки касаний:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    for (UITouch *touch in touches) {
        CGPoint location = [touch locationInView:nil];
        NSLog(@"touchesMoved at location %@", NSStringFromCGPoint(location));
    }
}

Когда я запускаю приложение в средстве моделирования, оно работает в значительной степени как ожидалось. Поскольку я перемещаю мышь от одного края экрана к другому, сообщил, что X значений идут от 0 до 767. Значения Y, о которых сообщают, идут от 20 до 1 023. (Это - известная проблема, что средство моделирования не сообщает о касаниях в лучших 20 пикселях экрана, даже когда нет никакой строки состояния.)

Вот то, что является странным: Когда я запускаю приложение на фактическом iPad, X значений идут от 0 до 767 как ожидалось, но сообщили, что значения Y идут от-6 до 1 017, не от 0 до 1 023, как я ожидал бы.

То, что это, кажется, работает правильно над средством моделирования, приводит меня подозревать, что сенсорные экраны физических устройств отлично не калибруются, и мои просто сообщают о значениях Y, которые являются шестью пикселями прочь. Кто-либо может проверить это дело обстоит так? Иначе есть ли что-либо еще, что могло составлять значения Y, являющиеся шестью пикселями прочь от того, что я ожидаю?

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

8
задан Kristopher Johnson 29 April 2010 в 12:09
поделиться

1 ответ

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

(iPadTestsAppDelegate)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];

    // Override point for customization after app launch    
    viewController.view.multipleTouchEnabled = YES;
    viewController.view.userInteractionEnabled = YES;

    [window addSubview:viewController.view];
    [window makeKeyAndVisible];

    return YES;
}

(iPadTestsViewController)

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    for (UITouch *touch in touches) {
        CGPoint location = [touch locationInView:nil];
        NSLog(@"touchesMoved at location %@", NSStringFromCGPoint(location));
    }
}

Когда я касаюсь краев экрана, он сообщает отрицательные числа по оси x и никогда не попадает 0 по оси ординат. Добавление некоторых переменных для отслеживания максимальных и минимальных значений дает мне углы нашего iPad: {-5, 2}, {758, 2}, {-5, 1019}, {758, 1019}.

1
ответ дан 6 December 2019 в 01:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: