我有一个“画布”视图,用户可以在其中输入不同位置的短字符串。我使用 NSTextField 进行条目或编辑,但是当不被编辑时,文本只是在视图的 draw 方法中绘制。
目前,每当需要输入或编辑时,我都会创建一个新的 NSTextField ,并且不保留它,因此当它作为子视图被删除时,它可能已被释放。
这工作正常,打字速度比处理器慢,没有明显的延迟。
最近发现需要从程序的不同部分去'finish editing'方法,所以sender不再一定是NStextField;我为用于此目的的文本字段添加了一个属性,现在在完成特定编辑任务时将其设置为 nil。这似乎仍然可以正常工作。
作为一个原则问题,最好简单地保留一个 NSTextField,然后简单地从超级视图中添加或删除它,而不是总是创建一个新的?
稍后添加:我决定使用单个 NSTextField,根据需要将其放入和取出超级视图。这对我来说似乎“更干净”,但我仍然会对任何赞成或反对的意见感兴趣。