iPad Пейзаж обнаруживает проблемы касания в левой части экрана - PullRequest
0 голосов
/ 26 ноября 2010

Я работаю над приложением для iPhone.Он отлично работает на iPhone, но когда я запускаю его на iPad или на симуляторе iPad, у него возникают проблемы с касаниями, которые превышают 320 в направлении x.

Многие кнопки UIB за пределами 320 будут выделены при нажатии, но не будут выполнять их действия.

Когда я добавлю это в свои суперпредставления:

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

 CGPoint touchLocation = [touch locationInView:self];
 NSLog(@"bounds: %1.2f %1.2f  touch: %1.2f %1.2f",self.bounds.size.width,self.bounds.size.height,touchLocation.x,touchLocation.y);     
}

, это будетНикогда не выводите значение x больше 320. Любая нажатая часть экрана больше 320 дает значение 320 для x.

Все UIViews выполняются программно и без UIViewControllers.Я установил plist, чтобы запустить его в альбомной ориентации, и в приложении DidFinishLaunching я вращаю представления следующим образом:

window.transform = CGAffineTransformMakeRotation((M_PI / 2.0));
window.bounds = CGRectMake(0, 0, 480, 320); 
window.center = CGPointMake(160.0f, 240.0f);
[window makeKeyAndVisible];

Любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 21 июля 2011

У меня была похожая проблема, но я создаю все программно Window, View и ViewController (потому что это была игра, использующая OpenGL ES).

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

// Always create the window in Portrait mode
mpWindow = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];

и viewController (который создает представление):

mpController = [[OViewController alloc] initWithFrame: CGRectMake(mPosX, mPosY, mWidth, mHeight)];
// After this line the view will rotate to landscape
[mpWindow addSubview:mpController.view];

Надеюсь, это поможет!

0 голосов
/ 21 июля 2011

Одно из ваших родительских представлений или окно имеет неправильную рамку.

Поскольку касания оцениваются от окна вверх к вашему представлению, оно остановится, если касание находится за пределами какого-либо из ваших родителей представлений.

вы можете отладить его с помощью кода, подобного:

UIView *parent = self ;
while (parent = [parent superview]) NSLog("parent: %@",NSStringFromCGRect(parent.frame));

, это напечатает кадры в иерархии ваших кадров ... проверьте, имеет ли ширина 320 пикселей

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