【问题标题】:OK button behaves differently when mouse-clicked单击鼠标时确定按钮的行为不同
【发布时间】:2011-04-02 00:57:14
【问题描述】:

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

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

但是,当我用鼠标单击“确定”按钮时,foo 的值被记录为空,而且只要我单击“确定”按钮,文本字段控件就会抓住焦点,而我的文本typed 出现选中。任何想法出了什么问题?

@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];

【问题讨论】:

标签: cocoa cocoa-bindings


【解决方案1】:

有时您需要按 Enter 键来“确认更改”可可绑定。我不确定,但是当您按下 Enter 键时,可能会同时执行更改和按钮操作。

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

【讨论】:

  • @Ergun:不要忘记将此答案标记为已接受(单击投票计数下的复选标记)。这是我们在这里说“谢谢”的另一种方式。在搜索您的问题已解决时,它还会让其他人知道。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-09
  • 2012-01-12
  • 2019-05-19
  • 1970-01-01
  • 2020-04-28
相关资源
最近更新 更多