Adding a Dotted red line under characters in a UITextView

Discussion in 'iOS Programming' started by ashwinr87, Nov 15, 2012.

  1. ashwinr87, Nov 15, 2012
    Last edited: Nov 16, 2012

    ashwinr87 macrumors member

    Mar 9, 2011
    I am trying to create my custom spell checker for the UITextView.

    To show that a word is misspelled, I need to add the "red dotted line" under the misspelled word. To do that, here is what I thought would work -

    I create a dictionary which contains the values for the key NSUnderlineStyleAttributeName. However, what this does is, it does underline the characters but it does not have a dotted pattern. Also, setting the strokeColorAttribute also does not seem to have any effect.

    Here is my code -

    NSMutableDictionary *misspelledAttributes = [NSMutableDictionary dictionary];
        [misspelledAttributes setObject:[NSNumber numberWithInt:kCTUnderlineStyleThick|kCTUnderlinePatternDot] forKey:NSUnderlineStyleAttributeName];
        [misspelledAttributes setObject:[UIColor redColor] forKey:NSStrokeColorAttributeName];
    To set the attributes to a attributed string for a particular range -

    NSMutableAttributedString *attrString = [self.textView.attributedText mutableCopy];
    [attrString addAttributes:misspelledAttributes range:wordRange];
    self.textView.scrollEnabled = NO;
                self.textView.attributedText = attrString;
                self.textView.selectedRange = NSMakeRange(NSMaxRange(range), 0);
                self.textView.scrollEnabled = YES;
    It would be great if someone could help me with this and point out what I am missing/doing wrong.
  2. ArtOfWarfare macrumors G3


    Nov 26, 2007
    You take the string from your text view, copy it, modify the copy, but from what we can see, you never do anything with that copy afterwards.

    I'd suggest adding a line along the lines of

    self.textView.attributedText = attrString;
    to the end of what you showed us and see how that works.
  3. ashwinr87 thread starter macrumors member

    Mar 9, 2011
    sorry.. probably I was not clear enough.. I do replace the string in the text view after adding my attributes. That was not the problem I was facing.

    The problem I am facing is that, I am not able to add dotted red lines. All I am able to add is a thick single line.


Share This Page