added delegate callback for `textView:shouldChangeTextInRange:replacementText:`