Вместо того, чтобы устанавливать вертикальное и горизонтальное выравнивание (которое создает окно редактирования вне центра, наблюдаемое выше), вы можете обработать прямоугольник редактирования вручную.Я переопределил editRectForBounds следующим образом.Это центрирует прямоугольник редактирования независимо от поворота:
-(CGRect)editingRectForBounds:(CGRect)bounds
{
// how tall is the font?
CGFloat fontHeight = [self.text sizeWithFont:self.font].height;
// compute pad
CGFloat pad = (bounds.size.height - fontHeight) / 2.0f;
// return rect with pad on top and bottom
return CGRectMake(bounds.origin.x, bounds.origin.y + pad, bounds.size.width, fontHeight);
}