There are issues you will face happening behind the scenes that you may not be able to overcome. You can try resetting readonly or enabled after edit of some fields.
If the goal is to stop it from being edited then you can try extended properties, but I usually resort to a security group and a bpm to block any users not in the group from changing the field.
Check out row rules. You can set the condition at something like FieldName == FieldName if you want the action to always occur. I’ve had to use the rule action of Disabled instead of ReadOnly to make it stick.