gpt4 book ai didi

cocoa-touch - 如何以方向友好的方式在选项卡栏上显示 UIDatePicker?

转载 作者:行者123 更新时间:2023-12-02 02:25:00 25 4
gpt4 key购买 nike

当我的用户点击我的表格 View 日期字段时,我想在 UIDatePicker 中滑动,就像在标准联系人应用程序中,当用户点击生日字段时一样。还有一个额外的 killer 级细节:

它在标签栏应用程序中,我希望 UIDatePicker 滑过标签栏。当用户将手机横向放置时,它仍然会旋转。

我显示 UIDatePicker 的方式是插入 View ,然后设置其位置的动画:

        [self.view addSubview: self.pickerView];

当我这样做时,显示了 UIDatePicker,但没有覆盖标签栏。

我也可以将它添加到窗口中:

        [self.view.window addSubview: self.pickerView];

UIDatePicker 正确地滑过标签栏,但随后,它不遵循方向。

我发现的唯一半可接受的方法是完全不使用标签栏,方法是使用

        detailViewController.hidesBottomBarWhenPushed = YES;

但这不是我想要的:我想要详细 View 中的选项卡栏。我只希望它在选择日期时消失。我不能将 UIDatePicker 放在它自己的带有 hidesBottomBarWhenPushed = YES 的 Controller 中,因为这会完全覆盖屏幕,我宁愿让细节 View 仍然部分可见。

欢迎提出任何建议。

这是我用来显示 UIDatePicker 的完整代码,是从一些示例代码中复制过来的:

- (void) doPickDate
{
NSDate *initialDateForPicker = [(ExpenseData*) self.displayedObject displayDate];
self.pickerView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin;
self.pickerView.datePickerMode = UIDatePickerModeDate;
self.pickerView.date = initialDateForPicker;

// check if our date picker is already on screen
if (self.pickerView.superview == nil)
{
[self.view addSubview: self.pickerView];

// size up the picker view to our screen and compute the start/end frame origin for our slide up animation
// compute the start frame
CGRect screenRect = [[UIScreen mainScreen] applicationFrame];
CGSize pickerSize = [self.pickerView sizeThatFits:CGSizeZero];
CGRect startRect = CGRectMake(0.0,
screenRect.origin.y + screenRect.size.height,
pickerSize.width, pickerSize.height);
self.pickerView.frame = startRect;

// compute the end frame
CGRect pickerRect = CGRectMake(0.0,
screenRect.origin.y + screenRect.size.height - pickerSize.height,
pickerSize.width,
pickerSize.height);
// start the slide up animation
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];

// we need to perform some post operations after the animation is complete
[UIView setAnimationDelegate:self];

self.pickerView.frame = pickerRect;

// shrink the table vertical size to make room for the date picker
CGRect newFrame = self.tableView.frame;
newFrame.size.height -= self.pickerView.frame.size.height - 49 /* tab bar height */;
self.tableView.frame = newFrame;
[UIView commitAnimations];

// add the "Done" button to the nav bar
self.navigationItem.rightBarButtonItem = self.doneButton;
}

}

最佳答案

您应该将 UIDatePicker 对象设置为该特定文本字段的 inputView。所有动画和演示内容都将得到处理。

隐藏光标

没有隐藏光标的方法。我能想到的唯一机制是使用 leftView 属性并将其设置为标签。

CGRect frame = self.textField.bounds;

UILabel * theLabel = [[[UILabel alloc] initWithFrame:frame] autorelease];
theLabel.userInteractionEnabled = YES;
theLabel.backgroundColor = [UIColor clearColor];

UITapGestureRecognizer * tap = [[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(tap:)] autorelease];
[theLabel addGestureRecognizer:tap];

self.textField.leftViewMode = UITextFieldViewModeAlways;
self.textField.leftView = theLabel;
self.textField.clipsToBounds = YES;

并使用,处理水龙头,

- (void)tap:(UIGestureRecognizer *)gesture {
[self.textField becomeFirstResponder];
}

现在这对圆角矩形按钮不起作用,因为无论标签的框架是什么,光标都会在右角闪烁。它隐藏了其他边框样式的光标。您还可以通过将您的值设置为其文本来利用该标签。

UILabel * theLabel = textField.leftView;
theLabel.text = @"Appropriate Value from Picker";

关于cocoa-touch - 如何以方向友好的方式在选项卡栏上显示 UIDatePicker?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6367354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com