Попробуйте это:
[[textField valueForKey:@"textInputTraits"] setValue:CUSTOM_COLOR forKey:@"insertionPointColor"];
Несмотря на то, что это кажется недокументированным, но это работает.Честно говоря, здесь вы не используете никаких частных методов - только кодирование значения ключа, которое является законным.
PS Вчера мое новое приложение появилось в AppStore без каких-либо проблем с этим подходом.И это не первый случай, когда я использую KVC при изменении некоторых свойств, доступных только для чтения (например, navatonBar) или частных иваров.