tworzę aplikację, w której trzeba zaimplementować funkcjonalność takiego:Zastosuj formacie RTF na wybranym tekście UITextView w iOS
1) Napisz do TextView
2) Wybierz tekst z TextView
3) Pozwól użytkownikowi na stosowanie pogrubienia, kursywy i podkreślenia na wybranym tekście.
Zacząłem wdrażać za pomocą NSMutableAttributedString. Działa pogrubieniem i kursywą, ale zastępuje tekst w tekście tylko wybranym tekstem.
-(void) textViewDidChangeSelection:(UITextView *)textView
{
rangeTxt = textView.selectedRange;
selectedTxt = [textView textInRange:textView.selectedTextRange];
NSLog(@"selectedText: %@", selectedTxt);
}
-(IBAction)btnBold:(id)sender
{
UIFont *boldFont = [UIFont boldSystemFontOfSize:self.txtNote.font.pointSize];
NSDictionary *boldAttr = [NSDictionary dictionaryWithObject:boldFont forKey:NSFontAttributeName];
NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc]initWithString:selectedTxt attributes:boldAttr];
txtNote.attributedText = attributedText;
}
Czy ktokolwiek może mi pomóc w realizacji tej funkcji?
Z góry dziękuję.
Jest to wbudowane w 'UITextView' (od wersji iOS 6.0). Ustaw właściwość 'allowEditingTextAttributes' na wartość' YES'. – rmaddy
Już to zrobiłem. Mój problem polega na tym, że zaznaczony tekst z pogrubieniem/kursywą pozostaje w tekście. Pozostałe teksty są usuwane. Chcę zastąpić tylko zaznaczony tekst pogrubieniem/kursywą w tekście tekstowym. –
Włączając właściwość 'allowEditingTextAttributes', nie potrzebujesz żadnego z opublikowanych przez siebie kodów. Jeśli zaznaczysz jakiś tekst w widoku tekstowym, widok tekstowy automatycznie wyświetli opcję menu BUI (pogrubienie/kursywa/podkreślenie). Nie musisz w tym celu pisać żadnego kodu. – rmaddy