add a shouldChangeCharactersInRange:replacementString: delegate and correct button sizing