2010-04-14 14 views
2

J'ai deux problèmes avec viewcontrollerss en orientation paysage sur l'iPad.iPad: Tableaux dans les vues Popover ne pas faire défiler pour afficher la ligne sélectionnée

(1) J'ai deux popups qui contiennent des tables. Les tableaux doivent défiler vers une ligne spécifique pour refléter une sélection dans la vue principale. Au lieu de cela, les tableaux défilent, mais la ligne sélectionnée reste hors écran.

(2) Toutes mes feuilles d'action viennent avec une largeur de 320.

Dans Interface Builder, toutes mes vues sont créées en orientation paysage. Seule la fenêtre principale n'est pas, mais je ne vois pas un moyen de changer cela.

Ma configuration: Au lancement, je reçois les coordonnées suivantes pour ma fenêtre principale et la vue principale de viewcontroller:

Window frame {{0, 0}, {768, 1024}} mainView frame {{0, 0}, {748, 1024}} 

Toutes les autres vues après que montrent ces coordonnées lors d'une convocation (lorsqu'il est chargé, mais avant d'être présenté):

frame of keysig {{0, 0}, {1024, 768}} 
    frame of instrumentSelect {{20, 0}, {1024, 768}} 
    frame of settings {{0, 0}, {467, 300}} 

Dans tous mes viewControllers, je réponds à shouldAutorotateToInterfaceOrientation avec:

  return ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || 
         (interfaceOrientation == UIInterfaceOrientationLandscapeRight)); 

Tout (presque) fonctionne comme prévu. L'application se lance dans l'un des deux modes paysage. Les vues (et viewcontrollers) affichent tout ce qui leur appartient et les taps fonctionnent sur tout l'écran comme prévu. Cependant, j'ai toujours les deux problèmes.

Problème 1: J'ai deux popups contenant des tables assez longues pour fonctionner hors de l'écran. Les tables doivent défiler jusqu'à une ligne sélectionnée. Ils défilent, c'est-à-dire qu'ils ne commencent pas visuellement à la ligne 1 mais ils ne défilent pas assez pour montrer réellement la ligne sélectionnée.

alt text http://idisk.mac.com/mahboud//Public/keysig.png

alt text http://idisk.mac.com/mahboud//Public/instrumentlist.png

Il semble presque comme un rect interne uitable est créé avec le mauvais numéro et reste de cette façon, mais je l'ai vérifié les deux ScrollView coordonnées du contenu UITableView et ils avaient l'air raisonnable.

Problème 2: Je pense que cela est lié à un problème 1 parce que mes actionsheets viennent avec une largeur de 320. Je ne peux que supposer que l'iPad permet actionSheets en seulement 320 ou 480 largeurs et comme il pense en quelque sorte que le l'écran est orienté en mode portrait, il utilise la largeur la plus étroite.

Voilà, vous l'avez. Je n'arrive pas à croire que je suis toujours coincé sur des problèmes d'orientation. Je jure qu'Apple ne facilite pas l'utilisation d'une application de paysage. Des idées?

+1

C'était une bonne question. Vous avez évidemment pris du temps avec ça. Cependant, vous avez enterré les questions réelles dans le corps. Les gens ont dû lire plusieurs centaines de mots pour savoir quel était votre problème. À l'avenir, mettez le problème en haut suivi de tous les détails. Plus de gens liront et répondront à votre question s'ils n'ont pas à se débattre pour savoir quel problème vous posez. J'ai modifié la question dans un format plus facile à lire. – TechZen

+0

Merci d'avoir pris le temps de clarifier. – mahboudz

Répondre

0

Je l'ai en quelque sorte compris. Si je prends le

[self.tableView scrollToNearestSelectedRowAtScrollPosition:UITableViewScrollPositionNone animated:YES]; 

sur soit le -viewDidAppear ou -viewWillAppear, et plutôt mettre juste après mon -presentPopoverFrom ..., Alors cela fonctionne:

[popController presentPopoverFromBarButtonItem:keySigBBItem permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

[keySignatureTableVC.tableView scrollToNearestSelectedRowAtScrollPosition:UITableViewScrollPositionMiddle animated:NO]; 

Que faut-il se produire est que doivent être à la fois obtenir appelé -viewDidAppear et -viewWillAppear avant presentPopover ... redimensionne ou réoriente la vue. Ce que je fais dans ces deux méthodes ne fonctionne pas sur le cadre correct ou les limites. Le défilement semble fonctionner.