objective-c – 如何接受编辑和解除包含自定义视图的弹出菜单?
我想添加在表视图中编辑特定列时使用日期选择器的功能,并使用
here中的代码片段,该代码片段运行良好.然而,NSDatePicker不适合我的需要,所以我使用自己的自定义视图,使用IB创建并通过NSViewController子类加载来编辑日期.
但是,我不知道如何以接受编辑的方式关闭弹出式菜单,即在userAcceptedEdit中返回YES: BOOL userAcceptedEdit = [menu popUpMenuPositioningItem:nil atLocation:frame.origin inView:tableView]; 当NSDatePicker是菜单的视图,但不是与我的自定义视图,这是正常工作. 我在自定义视图中捕获文本字段中的输入键操作,但我可以想出的是如何取消菜单跟踪,这使得userAcceptedEdit == NO: MyCustomViewController.mm: - (IBAction)textFieldAction:(id)sender { logdbg(@"Action"); NSMenu* menu = [[self.view enclosingMenuItem] menu]; [menu cancelTracking]; } 苹果应用程序菜单和弹出式列表编程主题的Views in Menu Items部分不包括… 编辑这是a sample project,这说明了这个问题. 有人可以提供一些指导吗? 解决方法
您还应该可以将textFields委托设置为NSViewController,在ViewController中实现NSTextFieldDelegate,并执行此操作
- (void)controlTextDidEndEditing:(NSNotification *)aNotification{ // NSTextField * textField = [aNotification object]; NSUInteger whyEnd = [[[aNotification userInfo] objectForKey:@"NSTextMovement"] unsignedIntValue]; if(whyEnd == NSReturnTextMovement){ // Create new event here using the below routine /* [[self window] keyDown: [NSEvent keyEventWithType:(NSEventType)type location:(NSPoint)location modifierFlags:(NSUInteger)flags timestamp:(NSTimeInterval)time windowNumber:(NSInteger)windowNum context:(NSGraphicsContext *)context characters:(NSString *)characters charactersIgnoringModifiers:(NSString *)unmodCharacters isARepeat:(BOOL)repeatKey keyCode:(unsigned short)code] ]; */ } } 在这里,您通过创建一个新事件传递给父视图,基本上将通知转换为EVENT 还应该注意到,这成为所有文本区域的中央“派遣”返回捕手. 以下是使用NSEvent创建方法的很好的链接: 注意在这个写法如何模拟一个key_down和一个key_up! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- XmlSerializer 对象的Xml序列化和反序列化
- oracle – SELECT * FROM TABLE(流水线函数):我可以确定结
- C#中的Register关键字是什么
- ruby-on-rails – Rails – 阻止除特定IP地址之外的所有IP地
- [swift]亲爱的 Erica,请帮我 guard 变量的值为空的情况
- React + webpack 开发单页面应用简明中文文档教程(四)调整
- [原]as3 flash web 应用 (5)js与flash的交互
- 为什么人们总是使用Objective-C(即iPhone)中的实例变量重新
- oracle – 如何动态获取记录中的字段名称和值
- AxonFramework,事件向上转换(Event Upcasting)