Bug graphique sur un textField

nicotinenicotine Membre
15:22 modifié dans API AppKit #1
Bonjour à  tous !

Petit problème tout bete mais qui me pose de gros soucis ( c'est toujours comme ça :))

j'ai une appli ou un grand nombre de textField sont généré, en code, en ligne. Je les repositionne à  chaque frame à  l'aide de la méthode setFrameOrigin, le but étant ici de toujours avoir mes éléments bien placés, même quand je redimensionne la fenêtre ou la déplace (et ya beaucoup de vues !)

Jusque la aucun probleme. Le soucis c'est qu'au moment d'éditer un de ces textfield, il part complètement en freestyle des que le focus est dans un des textfield, bugs graphiques partout, des bouts de mon image de fond qui viens se mettre dans les background des textfields, bref... je crois qu'il n'aime pas le setFrameOrigin pendant l'édition.

Des que le textfield est validé par contre, tout rentre dans l'ordre, ce n'est donc qu'un bug d'affichage.

Quelqu'un aurait une idée ?! quelque chose comme une boucle while qui tourne tant qu'un des textfield est en édition ?! si oui comment tester cette édition ?!

Merci à  tous ^^

Nico

Réponses

  • CéroceCéroce Membre, Modérateur
    juin 2010 modifié #2
    Je ne retrouve plus la doc, mais quand on édite un NSTextField, ce n'est pas vraiment lui qu'on édite.
    En fait, un objet graphique est ajouté par dessus pour permettre l'édition de texte. Si tu t'amuses à  déplacer toi-même le NSTextField pendant ce temps-là , tu obtiens ce genre de comportement.

    A priori, je ne peux que te déconseiller d'appeler setFrameOrigin: à  tout bout de champ. Il existe un système de redimensionnement/repositionnement automatique des vues, utilise-le, ça devrait marcher.


    P.S.: Je ne l'ai jamais utilisé, mais quand on a un grand nombre d'objets similaires, l'utilisation de NSMatrix est toute indiquée.
  • nicotinenicotine Membre
    15:22 modifié #3
    Je comprend mieux le comportement maintenant, merci beaucoup !

    Je vais essayer tout ça, l'idée de matrix me parait excellente ! Merci ^^

    N.
Connectez-vous ou Inscrivez-vous pour répondre.