linkedin / Hakawai

A powerful, extensible UITextView.
Apache License 2.0
781 stars 104 forks source link

Create typingAttributesSetByApp to restore textView typingAttributes #222

Open rcancro opened 3 years ago

rcancro commented 3 years ago

I was running into issues where after a mention is detected, my textView's typingAttributes are not used.

Looking at the code, it appears that after inserting a mention, the typingAttributes get recreated via stripCustomAttributesFromTypingAttributes. This method takes the current typingAttributes and removes all keys that are also in mentionUnselectedAttributes. It then tries to recreate typingAttributes by using fontSetByApp and textColorSetByApp.

My code never set these values, and instead was only using typingAttributes. After a mention was created, the font and foreground attributes would be removed by stripCustomAttributesFromTypingAttributes, leaving my textView with no typingAttributes.

This is a simple change to also keep track of typingAttributesSetByApp. If in typingAttributesByStrippingMentionAttributes: we see that typingAttributesSetByApp is non-nil, we return those. Otherwise we fall back on fontSetByApp and textColorSetByApp.