я инкапсулирую все методы) чтобы не было к ним доуступа извне) я кроче что придумал, правда не знаю сработает ли. в общем, у меня есть труктурка, у которой есть поле, которое передается как плейсхолдер, создал одну переменную в класе с didSet куда передал метод, который в текстфилд плейсхолдер передает стрингу, и в этом же методе в текстфилд кийборд тайп передаю метод, который принимает в себя стрингу и в зависимости от стринги возращает нужный тип клавиатуры))
Инкапсуляция не значит, что не может быть метода, который конфигурирует.
А вообще в таком случае почему нельзя в структуре с плейсхолдером хранить еще и тип клавы