首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置NSDatePicker委托

设置NSDatePicker委托
EN

Stack Overflow用户
提问于 2011-03-14 22:32:57
回答 4查看 5.9K关注 0票数 3

我有一个NSDatePicker (NSDatePicker* datePicker),并将它的委托设置为主应用程序(self)。我的程序如下。

  1. 使self datePicker委托

单击控件时调用[[datePicker cell] setDelegate:self];

  • Set datePickerAction:

[datePicker setAction:@selector(datePickerAction:)];

这就是方法。

代码语言:javascript
复制
- (IBAction)datePickerAction:(id)sender
{

    if( [[[NSApplication sharedApplication] currentEvent] modifierFlags] & 
       NSShiftKeyMask )
        NSLog(@"shift pressed %@", [datePicker dateValue]);

    else
        NSLog(@"hello %@", [datePicker dateValue]);

}

问题是,当我单击NSDatePicker日历中的日期时,委托似乎不起作用。

  • 问:这个代表团怎么了?NSDatePicker?

target/action方法工作得很好。

  • Q:我可以使用什么文档来支持什么委托方法来支持
EN

回答 4

Stack Overflow用户

发布于 2013-10-10 12:29:20

必须将此方法添加到代码中:

代码语言:javascript
复制
- (void)datePickerCell:(NSDatePickerCell *)aDatePickerCell validateProposedDateValue:(NSDate **)proposedDateValue timeInterval:(NSTimeInterval *)proposedTimeInterval
{
   NSString *aDate = [myDateFormat stringFromDate:*proposedDateValue];
}

从IB中,选择DatePickerCell,右键单击,将委托条目拖到文件所有者框中。

票数 3
EN

Stack Overflow用户

发布于 2011-06-03 21:43:52

对于NSDatePicker,委托行为出乎意料。有人可能认为,成为NSDatePicker的委托意味着您将从NSDatePicker的父类NSControl接收通知事件。

但事实并非如此。委托是在NSDatePicker的单元上设置的,因此委托类将接收来自单元的事件(符合NSDatePickerCellDelegate协议),而不是控件。只有其中一种单元格委托方法,即验证方法。

您可以跳过循环子类NSDatePicker并使委托发生在控件上,但随后就失去了验证委托,而视图层次结构的其他部分似乎依赖于验证委托。在这种情况下,我怀疑目标/操作方法,或者使用绑定,是拦截用户交互的唯一方法。

票数 2
EN

Stack Overflow用户

发布于 2016-09-03 04:40:24

您需要子类NSDatePicker和重写MouseDown事件,并将其连接到委托。这是密码。

CustomDatePick.h

代码语言:javascript
复制
#import <Cocoa/Cocoa.h>

@protocol CustomPickerDelegate

- (void)didPickerClick;

@end

@interface CustomDatePicker : NSDatePicker

@property (assign) id <CustomPickerDelegate> myDelegate;

@end

CustomDatePick.m

代码语言:javascript
复制
#import "CustomDatePicker.h"

@implementation CustomDatePicker

- (void)mouseDown:(NSEvent *)event {
    [super mouseDown:event];

    [self.myDelegate didPickerClick];
}

@end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5305423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档