我想为特定文本字段添加一个pickerview而不是一个键盘,并直接在.m文件中填充带有内容的选择器视图
实现这一目标的最简单方法是什么?
我可以直接在界面构建器中执行此操作,还是必须自行添加更多代码?
答案 0 :(得分:1)
您可以在uitextfield上使用自定义按钮。并且可以按下该按钮的触发动作。 当pickerview解除时,只需在文本框中添加所选文本。
答案 1 :(得分:1)
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
[self createPickerView];
}
-(void)createPickerView
{
//create Picker Here
}
或将按钮置于原位文本字段根据它不作为。
答案 2 :(得分:1)
将标记设置为该textField并检查textFieldDidBeginEditing方法写入选择器代码中的条件。
答案 3 :(得分:1)
对于任何Xamarin.iOS开发人员,这里是如何在C#
中完成的public partial class MyViewController : UIViewController
{
public override void ViewDidLoad()
{
base.ViewDidLoad();
ConfigurePicker();
}
void ConfigurePicker()
{
var pickerTextField = new UITextField();
var picker = new UIPickerView
{
Model = new PickerViewModel(),
ShowSelectionIndicator = true
};
var screenWidth = UIScreen.MainScreen.Bounds.Width;
var pickerToolBar = new UIToolbar(new RectangleF(0, 0, (float)screenWidth, 44)) { BarStyle = UIBarStyle.Default, Translucent = true };
var flexibleSpaceButton = new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace);
var doneButton = new UIBarButtonItem(UIBarButtonSystemItem.Done, (sender, e) => pickerTextField.ResignFirstResponder());
pickerToolBar.SetItems(new[] { flexibleSpaceButton, doneButton }, false);
pickerTextField.InputView = picker;
pickerTextField.InputAccessoryView = pickerToolBar;
}
class PickerViewModel : UIPickerViewModel
{
int[] _pickerSource = new []{ 1, 2, 3, 4, 5 };
public override nint GetRowsInComponent(UIPickerView pickerView, nint component) => _pickerSource.Count;
public override string GetTitle(UIPickerView pickerView, nint row, nint component) => _pickerSource[(int)row];
public override nint GetComponentCount(UIPickerView pickerView) => 1;
}
}
答案 4 :(得分:0)
User.where(id: 10)
User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? [["id", 10]]
=> #<ActiveRecord::Relation []>
答案 5 :(得分:-1)
这是您的问题的解决方案
你在其中一个堆栈溢出问题中找到它,点击下面显示的链接。
Elegantly replace iPhone keyboard with UIPickerView
或强>
首先,这是一个screencapture showing how this looks。
实现UITextFieldDelegate并显示包含UIPickerView的“弹出窗口”。
- (void)textFieldDidEndEditing:(UITextField *)textField {
UIPickerView *picker = [[UIPickerView alloc]
initWithFrame:CGRectMake(0, 244, 320, 270)];
picker.delegate = self;
picker.dataSource = self;
[self.view addSubview:picker];
[picker release];
}
当键盘消失时,可以看到选择器视图。
如果你想更进一步,你可以像键盘一样为UIPickerView“滑入”设置动画。
- (void)viewDidLoad {
//picker exists in the view, but is outside visible range
picker = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 480, 320, 270)];
picker.delegate = self;
picker.dataSource = self;
[self.view addSubview:picker];
[picker release];
}
//animate the picker into view
- (void)textFieldDidEndEditing:(UITextField *)textField {
[UIView beginAnimations:@"picker" context:nil];
[UIView setAnimationDuration:0.5];
picker.transform = CGAffineTransformMakeTranslation(0,-236);
[UIView commitAnimations];
}
//animate the picker out of view
- (void)textFieldDidBeginEditing:(UITextField *)textField {
[UIView beginAnimations:@"picker" context:nil];
[UIView setAnimationDuration:0.5];
picker.transform = CGAffineTransformMakeTranslation(0,236);
[UIView commitAnimations];
}
//just hide the keyboard in this example
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return NO;
}