From 1d7a874747d8afa94ee98465f375bf7320611b45 Mon Sep 17 00:00:00 2001 From: Cameron Spickert Date: Sun, 16 Mar 2014 20:30:38 -0400 Subject: [PATCH 1/3] Fix crash when setting placeholder before font --- SAMTextView/SAMTextView.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/SAMTextView/SAMTextView.m b/SAMTextView/SAMTextView.m index 255d284..c25a606 100644 --- a/SAMTextView/SAMTextView.m +++ b/SAMTextView/SAMTextView.m @@ -41,7 +41,9 @@ - (void)setPlaceholder:(NSString *)string { if ([self isFirstResponder] && self.typingAttributes) { [attributes addEntriesFromDictionary:self.typingAttributes]; } else { - attributes[NSFontAttributeName] = self.font; + if (self.font) { + attributes[NSFontAttributeName] = self.font; + } attributes[NSForegroundColorAttributeName] = [UIColor colorWithWhite:0.702f alpha:1.0f]; if (self.textAlignment != NSTextAlignmentLeft) { From 7630519b6af509629724e3a294d390c4aa1cb464 Mon Sep 17 00:00:00 2001 From: Cameron Spickert Date: Sun, 16 Mar 2014 20:30:50 -0400 Subject: [PATCH 2/3] Fix crash when setting placeholder to nil --- SAMTextView/SAMTextView.m | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/SAMTextView/SAMTextView.m b/SAMTextView/SAMTextView.m index c25a606..539194c 100644 --- a/SAMTextView/SAMTextView.m +++ b/SAMTextView/SAMTextView.m @@ -36,6 +36,10 @@ - (void)setPlaceholder:(NSString *)string { if ([string isEqualToString:self.attributedPlaceholder.string]) { return; } + if (string == nil) { + self.attributedPlaceholder = nil; + return; + } NSMutableDictionary *attributes = [[NSMutableDictionary alloc] init]; if ([self isFirstResponder] && self.typingAttributes) { From f21d18a0eda2bfa03f967c1b466011bc16c872de Mon Sep 17 00:00:00 2001 From: Cameron Spickert Date: Sun, 16 Mar 2014 20:38:36 -0400 Subject: [PATCH 3/3] Fix behavior when setting font after attributed placeholder --- SAMTextView/SAMTextView.m | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/SAMTextView/SAMTextView.m b/SAMTextView/SAMTextView.m index 539194c..5ca1820 100644 --- a/SAMTextView/SAMTextView.m +++ b/SAMTextView/SAMTextView.m @@ -85,6 +85,18 @@ - (void)setContentInset:(UIEdgeInsets)contentInset { - (void)setFont:(UIFont *)font { [super setFont:font]; + + NSMutableAttributedString *attributedPlaceholder = [self.attributedPlaceholder mutableCopy]; + if (attributedPlaceholder) { + NSRange range = NSMakeRange(0, attributedPlaceholder.length); + if (font == nil) { + [attributedPlaceholder removeAttribute:NSFontAttributeName range:range]; + } else { + [attributedPlaceholder addAttribute:NSFontAttributeName value:font range:range]; + } + self.attributedPlaceholder = attributedPlaceholder; + } + [self setNeedsDisplay]; }