【发布时间】:2012-02-16 22:47:56
【问题描述】:
我已经彻底研究了这个话题,发现有人在许多网站上发布了完全相同的问题,包括 stackoverflow 中的右 here。
我已经尝试了所有建议,但无法让 UIDatePicker 实际显示。我采取什么方法似乎并不重要。我尝试使用继承模型,在该模型中我继承了 UITextBox 控件并覆盖它的默认方法以显示 UIDatePicker,然后我确保在 StoryBoard 中我将 UITextView 控件的类设置为该自定义类。我尝试以编程方式生成 UIDatePicker 并尝试将其拖到 StoryBoard 中的视图上。当我尝试编程方法时,什么都没有显示,当我尝试将它拖到 StoryBoard 上时,它总是显示。当我将它的属性设置为“隐藏”时,它会隐藏,但即使我尝试将代码添加到应该取消隐藏它的 textboxDidBeginEditing 方法,我也无法显示它。
我确保将 UITextView 的 inputView 属性设置为等于我的 UIDatePicker 控件。
没有任何效果!我不明白为什么 Apple 不只是将 UIDatePicker 设为 UITextView 控件的 Attributes Inspector 下拉列表中的默认选项之一。那会让这一切变得容易得多。
以下是我的实现类文件中的一些代码。
#import "AddTasksViewController.h"
@implementation AddTasksViewController
@synthesize dueDate;
@synthesize description;
@synthesize shortTitle;
@synthesize datePicker;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
self.dueDate.inputView = datePicker;
}
return self;
}
- (IBAction)dueDateDidBeginEditing:(UITextView *)textField
{
[textField resignFirstResponder];
[datePicker setFrame:CGRectMake(0,200,320,120)];
[datePicker addTarget:self action:@selector(done) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:datePicker];
}
这是我的头文件的样子...
#import <UIKit/UIKit.h>
@interface AddTasksViewController : UIViewController
@property (nonatomic, copy) IBOutlet UITextView *dueDate;
@property (nonatomic, copy) IBOutlet UITextView *description;
@property (nonatomic, copy) IBOutlet UITextView *shortTitle;
@property (nonatomic, retain) IBOutlet UIDatePicker *datePicker;
- (IBAction)doneEditing:(id)sender;
- (IBAction)dateChanged:(id)sender;
- (IBAction)dueDateDidBeginEditing:(UITextView *)textField;
@end
正如我已经提到的,我采用的另一种方法(即子类化 UITextView)也不起作用。我复制了here 提供的代码,与显示的完全相同。然后,我将名为“DateField”的自定义类添加到我的项目(头文件和实现文件)中,然后在我的 AddTaskViewController.h 和 AddTaskViewController.m 文件中将 DueDate 的 UITextBox 声明替换为 DateField,并确保 StoryBoard 引用通过在 Identity Inspector 中为控件的类选择 DateField 来更新。
无论我做什么,我都无法在单击 UITextView 时显示 UIDatePicker。当我设置断点时,它确实命中了dueDateDidBeginEditing 方法,所以我知道某些东西正在被触发。问题是我不明白为什么 UIDatePicker 没有显示 subView。
任何帮助都将不胜感激,因为这个看似简单的任务似乎比它应该花费的时间要长得多。在 Java 和 C# 中,我可以闭上眼睛、双手绑在背后做这类事情,但对于 Objective-C,一切都变得不必要地复杂。语法真的让我很生气。
这么多方括号!!!啊啊啊!!!
【问题讨论】:
-
..你知道数据源和委托吗??
-
您无法在
-initWithNibName:bundle:中配置您的视图,因为此时您的网点为零。试试-viewDidLoad。
标签: iphone ios xcode uitextview uidatepicker