OK按钮在鼠标时的行为不同

我有一个NSTextField控件,一个确定按钮和一个取消按钮的模式表。 OK按钮绑定到我的控制器类中名为theSheetOK的操作方法。 我还将NSTextField控件绑定到我的控制器(文件所有者)中名为foo的NSString成员,并使用键值绑定来读取用户输入的文本值(例如,绑定检查器中的文本字段的模型键路径设置为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];

有时你需要按回车来确认可可绑定的改变。 我不确定,但有可能在您进入时同时执行更改和按钮操作。

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

在这里输入图像描述

链接地址: http://www.djcxy.com/p/85265.html

上一篇: OK button behaves differently when mouse

下一篇: Cannot bind NSSlider in IB?