2011-03-24 4 views
0

J'ai un NSTextView éditable, dans lequel l'utilisateur écrira en utilisant le style de police différent, sur certaines actions que je dois préparer le format HTML de lui, Quelqu'un peut-il me suggérer, comment je peux récupérer les données de NSTextView , je suis en mesure d'utiliserRécupérer des données de NSTextView

[[pInputText textStorage] words]; 

mais il retourne NSArray, dont je ne suis pas en mesure d'obtenir NSMutableString,

quelqu'un peut-il me suggérer la meilleure façon possible de récupérer la chaîne/données quel utilisateur tapées et dans quel format.

Répondre

2

solutions ci-dessous fonctionne pour moi,

- (NSString *)convertUnderlineTextToHTML:(NSAttributedString *)_mString 
{ 

    NSArray * exclude = [NSArray arrayWithObjects:@"doctype", @"html", 
         @"head", @"body",@"xml",nil]; 

    NSDictionary * htmlAtt = [NSDictionary 
           dictionaryWithObjectsAndKeys:NSHTMLTextDocumentType,NSDocumentTypeDocumentAttribute,exclude,NSExcludedElementsDocumentAttribute,nil]; 

    NSError * error; 

    NSData * htmlData = [_mString dataFromRange:NSMakeRange(0, [_mString 
                   length]) documentAttributes:htmlAtt error:&error]; 


    NSString * sdat = [[NSString alloc] initWithData:htmlData 
              encoding:NSUTF8StringEncoding]; 

    NSLog(sdat); 

    return sdat; 
} 

Où _mString est

NSMutableAttributedString *pAttributedString = [pInputText textStorage]; 

NSString *pHtml = [self convertUnderlineTextToHTML:pAttributedString]; 

Cordialement Rohan

1

NSTextView hérite de NSText, qui a une méthode -string. Donc [pInputText string devrait faire ce que vous voulez.

Alternativement, TextStorage est une sous-classe de NSMutableAttributedString, donc si vous voulez une chaîne attribuée, vous pouvez simplement utiliser le retour de [pInputText textStorage] directement.

+0

Merci Smorgan, je vais vérifier et vous faire savoir – Amitg2k12

0

depuis NSTextStorage est une sous-classe de NSMutableAttributedString qui a une méthode par sa superclasse NSAttributedString: initWithHTML:baseURL:documentAttributes, vous pouvez l'utiliser pour obtenir ce que vous voulez. documentAttributes peut être NULL.