Here is my (crappy, but functional) solution. It brings up the GUILayout.TextArea to modify the label, if useGUItextEditInstead is set to true (and the myCamera is the camera for the input object).
It also hides the TextArea if the parent object has localScale<0.02 (which I tried using transform.lossyScale, but it didn't work and I don't know why).
Changes to UIInput.cs:
public bool useGUItextEditInstead = false;
public Camera myCamera;
void OnGUI()
{
// mostly to get ctrl-v to work in the webplayer
if ( ( myCamera!=null || useGUItextEditInstead ) && ( transform.parent.localScale.x > 0.02f || transform.parent.localScale.y > 0.02f ) ) {
Vector2 selectedObjScreenPos = myCamera.WorldToScreenPoint ( transform.position ); // Event.current.mousePosition;
if ( ( selectedObjScreenPos.y <= Screen.height ) && ( selectedObjScreenPos.y >= 0 ) ) {
selectedObjScreenPos.y = Screen.height-selectedObjScreenPos.y;
}
Vector2 convertedGUIPos = GUIUtility.ScreenToGUIPoint(selectedObjScreenPos);
GUI.BeginGroup(new Rect(convertedGUIPos.x, convertedGUIPos.y-100, label.lineWidth, 100));
label.text = GUILayout.TextArea( label.text );
GUI.EndGroup();
}
}