【问题标题】:Change value of a uidatepicker from a button on the InputAccessoryView从 InputAccessoryView 上的按钮更改 uidatepicker 的值
【发布时间】:2016-05-05 03:57:17
【问题描述】:

我有一个UIDatePicker,当用户在我的视图上点击一个文本字段时,它以编程方式创建(作为第一响应者)。这发生在一个 for 循环中,所以我的代码中没有对这个选择器的引用。我在选择器顶部还有一个工具栏,它作为inputAccessoryView 添加到选择器中。我有一个 完成 按钮,可以让第一响应者辞职。到目前为止一切顺利。

除了完成按钮之外,我想在工具栏上添加另一个按钮,这将改变选择器的值。没有UIDatePickerDelegate 可以让我跟踪活动选择器。

我总是可以为我的每个选择器定义类变量,从而手动保存引用。但是有没有一种简单的方法可以直接从inputAccessoryView 访问inputView

【问题讨论】:

  • 你能展示你的代码吗?

标签: ios swift uidatepicker inputaccessoryview


【解决方案1】:

这个在 some.h 文件中

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

{
     IBOutlet UIDatePicker *picker1;
     IBOutlet UITextField *txtFld;

}
@property (nonatomic, retain) UIToolbar *keyboardToolbar;

@end

在一些.m 文件中

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
         [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
 picker1=[[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, 320, 300)];//frames are just for demo
 [txtFld setInputView:picker1];
}

- (void)keyboardWillShow:(NSNotification *)notification
{
    if(keyboardToolbar == nil) {
        keyboardToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 410, 320, 44)] ;
        [keyboardToolbar setBarStyle:UIBarStyleBlackTranslucent];
        [keyboardToolbar sizeToFit];

        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration:0.4];

        UIBarButtonItem *flexButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];

        UIBarButtonItem *doneButton1 =[[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(resignKeyboard)];
        NSArray *itemsArray = [NSArray arrayWithObjects:flexButton,doneButton1, nil];

        [keyboardToolbar setItems:itemsArray];


        [txtFld setInputAccessoryView:keyboardToolbar];
        [self.view addSubview:keyboardToolbar];
        [UIView commitAnimations];
    }
}



-(void)resignKeyboard {

    [keyboardToolbar removeFromSuperview];
    [txtFld resignFirstResponder];
///do nescessary date calculation here

    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-09
    • 2012-10-21
    相关资源
    最近更新 更多