Поскольку методы делегата вашего текстового поля находятся в ячейке, ячейка должна знать, какую длину применять для ее текстового поля.
Контроллер представления должен предоставить эту длину каждой ячейке на основе cellForRowAt
на текущем пути индекса.
Добавьте свойство textLength
к вашему классу ячеек, а затем установите это значение в cellForRowAt
.
Тогда ваш shouldChangeCharactersIn
в классе ячеек можетиспользуйте это свойство textLength
вместо жестко закодированного 12
, который у вас есть сейчас.