2012-12-03 12 views
6

Nella mia app sto utilizzando una visualizzazione testuale con sfondo blu.Problema di correzione automatica con una UITextview colorata

Quando la correzione automatica è abilitata, ogni volta che corregge una parola si forma una casella bianca attorno alla parola e cambia anche il colore del testo.

Qualche idea su come fermare questo effetto?

+0

Ho la stessa domanda e non ho trovato risposta ... qualcuno? Ti offro una taglia per una risposta a questo (che non verrebbe rifiutato dall'app store) – Cashew

+0

COME ON! nemmeno un commento? nessun altro usa mai la correzione automatica con un UITextView colorato? sono solo io (e OP) che hanno questo problema? Almeno pubblica un commento e dì "sto avendo lo stesso problema e penso ..." – Cashew

+0

Scusate. Ho fatto qualche ricerca in giro e non ho trovato alcuna informazione utile. – JSuar

risposta

4

No, penso che non è possibile modificare il colore della sovrapposizione o TextColor fuori dalla scatola ..

Questo è un duro, se si mette un punto di interruzione in - (void) layoutSubviews {..} della vista Avrete vedi UIKit ha disegnato un 'UITextSelectionView' sopra il testo ...

Ho provato a sottoclasse UITextView per vedere se il suo layoutSubviews è stato sparato e sembra che lo faccia!

Così ho provato a rimuovere la sovrapposizione:

- (void) layoutSubviews { 
    [super layoutSubviews]; 

    for (UIView *subview in self.subviews) { 
     if ([NSStringFromClass([subview class]) isEqualToString:@"UITextSelectionView"]) { 
      DLog(@"Subview %@", [subview debugDescription]); 
      [subview removeFromSuperview]; 
      break; 
     } 
    } 
} 

e ha funzionato .. ma che si traduce in mancanza il cursore, e disabilitando qualsiasi selezione :(

penso che dovrete disattivare Correzione automatica ..

io ri-avviare il bounty se qualcuno trova una risposta reale!

+0

La correzione automatica è un must nella mia app, posso ' t disabilitarlo Proverò il tuo codice e spero di poter capire qualcosa. grazie per lo sforzo. – Cashew

+0

Sì, lo pensavo, buona fortuna! Fammi sapere se hai trovato qualcosa! – Tieme

+0

:(sembra che non si trovi una risposta, ti assegnerò la taglia in quanto sarebbe un peccato lasciar perdere. – Cashew

0

Questo può avere altra effetti collaterali Attualmente sto studiando ciò che altrimenti chiama questo, ma sovrascrivendo firstRect (per intervallo) in UITextView e restituendo CGrect.Zero rimuove l'evidenziazione.

override public func firstRect(for range: UITextRange) -> CGRect { 
    return CGRect.zero; 
}