2010-07-28 17 views
0

J'ai un bouton qui ajoute un jeton à un NSTokenField. Il ajoute le jeton toujours à la fin du champ:Je voudrais insérer un jeton au point d'insertion du curseur, pas à la fin du tableau

NSTokenField *currentField = [sender representedObject]; 

    // Determine which token should be inserted into the field using the tag of the sender. 
    switch([sender tag]) 
    { 
     case eFileNameToken_StartDate: 
      [currentField setObjectValue:[[currentField objectValue] arrayByAddingObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:kTokenName_StartDate, kTokenKey_Name, @"%m-%d-%Y", kTokenKey_Format, [NSNumber numberWithInt:0], kTokenKey_FormatIndex, nil]]]; 
      break; 

Parce qu'il est saisissant le tableau de la ChampEnCours objectValue puis créer un tableau en ajoutant l'objet. J'aimerais connaître le point d'insertion du curseur et insérer l'objet dans currentField objectValue qui en résulte afin que je puisse ensuite définir la valeur ObjectObject du champ currentField avec les jetons correctement ordonnés. Merci pour toute aide yall

Répondre

1

Donc, je l'ai compris et je pensais que Id partager ma solution.

Il faut saisir fieldEditor et vérifier son SelectedRange.

NSText *textEditor = [currentField currentEditor]; 

Ceci vous donne le point d'insertion dans le champ de texte actuellement édité. Cependant, si vous avez un tokenField avec du texte et des jetons mélangés, vous constaterez que chaque jeton ne compte que pour un caractère dans le SelectedRange.

Si tel est le cas, vous devez écrire une logique pour l'insérer correctement dans la matrice currentField.

  1. Étapes:
    1. faire une température NSMutableArray
    2. remplir que le [ChampEnCours objectValue]
    3. itérer à travers ce tableau de température, incrémenter un compteur postion, 1 pour les classes de jeton genre, 1 pour chaque caractère dans une chaîne non symbolique
    4. à la fin de chaque boucle incrémenter votre index de tableau
    5. assurez-vous de vérifier si le positioncounter est égale ou supérieure que votre [currentFieldEditor selectedRange] .location et briser hors de la boucle
    6. insert Enfin, votre nouveau jeton dans le tableau de température et [ChampEnCours setObjectValue: avec ce tableau]

Mes jetons sont des virgules delinated et poussés dans NSDictionaries avec des noms de style $ jeton $ Voilà comment je délimiter entre le texte et les jetons quand je lance ma boucle.

heureux :)