Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa NSStepper忽略当前NSTextField值_Cocoa_User Interface - Fatal编程技术网

Cocoa NSStepper忽略当前NSTextField值

Cocoa NSStepper忽略当前NSTextField值,cocoa,user-interface,Cocoa,User Interface,我遇到了与集成NSStepper和NSTextField中描述的相同的初始问题: 我需要一个NSTextField作为一个控件与NSStepper一起工作,这样我就可以通过直接在文本字段上更改整数值或使用stepper向上/向下箭头来编辑整数值 使用carlosb评论的绑定会产生一个可用的UI。然而,在最初的问题中,carlosb描述了以下内容: 问题是,如果我编辑文本字段,然后再次单击步进器,它将忘记我手动编辑的值,并使用步进器的内部值 这就是为什么我再次发布关于这个问题的变体。carlosb

我遇到了与集成NSStepper和NSTextField中描述的相同的初始问题:

我需要一个NSTextField作为一个控件与NSStepper一起工作,这样我就可以通过直接在文本字段上更改整数值或使用stepper向上/向下箭头来编辑整数值

使用carlosb评论的绑定会产生一个可用的UI。然而,在最初的问题中,carlosb描述了以下内容:

问题是,如果我编辑文本字段,然后再次单击步进器,它将忘记我手动编辑的值,并使用步进器的内部值

这就是为什么我再次发布关于这个问题的变体。carlosb使用绑定并不能解决这个问题。这发生在我正在处理的当前项目和我创建的测试项目中。可以在GitHub上找到。您可以通过右上角的“下载源代码”按钮在那里下载它(即使没有git)


有没有一个干净的方法来解决这个问题?

您的问题是编辑直到您按return键或字段失去焦点才结束(因此数字实际上从未更改)。如果编辑后按return键或离开该字段,您将看到它按预期工作

一种解决方案是在文本字段的值绑定中选中“Continuously Updates Value”选项,并在文本字段的属性中选中“Continuous”选项


这将确保在键入值时更新该值,因此立即单击步进器将反映这些更改。

文本字段和滑块都位于图案的视图层中。通过将这两个视图绑定到控制器的属性,您将获得更好的结果。

谢谢!我尝试了“持续更新值”,但没有设置“持续”选项。在测试应用程序中,这样做效果很好。在我当前的项目中,如果set:方法是从UI/bindings系统调用的,那么validate:error:方法现在将获得NSString参数。我得调查一下。顺便说一句:我刚刚更新了测试项目。在尝试了很多组合之后,这似乎是毫无希望的。我可以用约书亚·诺齐的方法解决步进问题。但是,一旦我通过validate:error:和“立即验证”选项添加格式化程序或验证,一个或多个部分就不再工作了。我再次更新了测试项目,以演示几种方法。“最好”的方法是“Continuous,Validates in Setter”。唯一剩下的缺点是ivar中存储了正确的值,但UI不显示当前值。这必须是可能的:NSDatePicker的工作方式与NSTextField/NSStepper组合的工作方式相同。是。我只是在上面链接的测试项目中这样做。约书亚·诺齐的方法在基本情况下效果良好。它不能解决添加验证和/或格式化程序时出现的问题。