cocoa - 单击鼠标时“确定”按钮的行为有所不同

标签 cocoa cocoa-bindings

我有一个模态表,其中包含一个 NSTextField 控件、一个“确定”按钮和一个“取消”按钮。 OK 按钮绑定(bind)到我的 Controller 类中名为 theSheetOK 的操作方法。我还将 NSTextField 控件绑定(bind)到 Controller (文件所有者)中名为 fooNSString 成员,并使用键值绑定(bind)来读取文本用户输入的值(即绑定(bind)检查器中文本字段的模型键路径设置为 foo)。

如果输入文本并且用户通过键盘点击“确定”按钮,则一切正常。当我在 theSheetOK 处理程序中使用 NSLog 跟踪 foo 的值时,我看到了我刚刚在文本字段中输入的值。

但是,当我用鼠标单击“确定”按钮时,foo 的值被记录为空,而且一旦我单击“确定”按钮,文本字段控件就会捕获焦点,并且文本我键入的内容显示为已选择。有什么想法出了什么问题吗?

@interface MyController : NSWindowController {
@private
NSString *foo;
}
@property (copy, readwrite)NSString* foo;
-(IBAction) theSheetOK:(id)sender;
-(IBAction) theSheetCancel:(id)sender;
@end
...
#import "MyController.h"
@implementation MyController
@synthesize foo;

-(IBAction) theSheetOK:(id)sender
{
  NSLog(@"theSheetOK");
  NSLog(@"foo= %@", foo);
  ...
  NSWindow* theSheet = [self window];
  [NSApp endSheet:theSheet returnCode: NSOKButton];
  [theSheet orderOut:nil];

最佳答案

有时您需要按 Enter 键来“确认对 cocoa 绑定(bind)的更改”。我不确定,但当您按 Enter 键时,更改和按钮操作可能都会执行。

如果是这种情况,请选择您的 NSTextField 并标记“连续更新值”选项,以便正确同步。

enter image description here

关于cocoa - 单击鼠标时“确定”按钮的行为有所不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5520366/

相关文章:

cocoa - 从文件 URL 确定 AFP 共享

cocoa - 如何在仍然使用 NSArrayController 的同时直接响应 NSTableView 编辑?

objective-c - 您需要实现什么来为 NSArrayController 提供内容集?

cocoa - 如何将 NSFormatter 子类与 NSPopUpButton 一起使用

objective-c - 与 Interface Builder 等价的 NSTextfield 键

objective-c - 是否有可用于 double 的字符串格式化程序?

cocoa - 将 NSTableView 绑定(bind)到 NSMutableArray

objective-c - 从 Cocoa 应用程序获取 Finder 窗口的当前目录

cocoa - 将数组 Controller 初始化从 nib 移动到代码会破坏 TableView 绑定(bind)

objective-c - NSTableView 和 NSMutableArray 之间的 Cocoa 绑定(bind)拒绝更新