繁体   English   中英

如何通过有效的用户交互来添加UIDatePicker子视图

[英]How can I add a UIDatePicker Subview with working user interaction

我有一个基于视图的应用程序,其中包含一些文本框,试图用一些选择器填充这些文本框。 例如,其中之一将用于日期选择。 我正在使用以下内容将新视图添加到当前视图的底部,然后向上滚动整个视图:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
  if(textField == [self date]) {        
    editingDate = YES;
    UIDatePicker *pv = [[UIDatePicker alloc] initWithFrame:CGRectMake(0,460,0,0)];
    pv.userInteractionEnabled = YES;
    [self.view addSubview:pv];  
    textField.placeholder = @"currently selecting below";   
    [self scrollTheView:YES];
    return NO;
  } 
  return YES;
}

我的scrollTheView方法执行如下:

- (void)scrollTheView:(BOOL) moveUp {
    int scrollAmount = 212;
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.3];
    CGRect rect = self.view.frame;
    if(moveUp){
        rect.origin.y -= scrollAmount;
    }
    else {
        rect.origin.y += scrollAmount;
    }
    self.view.frame = rect;
    [UIView commitAnimations];
} 

我的问题是,尽管显示看起来很完美,但datepicker控件根本不会接受我的输入。 它只是停留在当前日期。 我不确定这里缺少什么,可能很简单。

通过修改上面的代码来执行以下操作,以将子视图添加为超级视图的子视图:

    UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(0, 480, 320, 216)];
    UIDatePicker *pv = [[UIDatePicker alloc] initWithFrame:CGRectMake(0,0,320,216)];
    [myView addSubview:pv];

    [self.view.superview addSubview:myView];  

并修改我的scroll方法以额外滚动此新视图:

    UIView *sv = self.view.superview;
    UIView *subv = [[sv subviews] objectAtIndex:1];
    CGRect rect2 = subv.frame;
    if(moveUp){
        rect2.origin.y -= scrollAmount;
    }
    else {
        rect2.origin.y += scrollAmount;
    }
    subv.frame = rect2;

我能够实现目标。 感谢Ben的协助。

从您所描述的听起来,您是将UIDatePicker放置在另一个视图的内部,但不在其范围之内。 如果未选中IB中的“剪辑子视图”,那么您仍然可以查看选择器,但由于它不在边界区域,因此无法触摸。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM