TextInput字段与Pickerview代替键盘
本文关键字:键盘 Pickerview 字段 TextInput | 更新日期: 2023-09-27 18:07:40
我想为特定的文本字段添加一个pickerview而不是键盘,并直接在.m文件
中填充内容的pickerview实现这一目标最简单的方法是什么?
我可以直接在界面构建器中这样做吗?还是我必须自己添加很多代码?
对于任何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;
}
}
您可以在uitextfield上使用自定义按钮。当按钮被按下时,可以开火。当pickerview解散时,只需在文本框中添加选中的文本。
设置标签为textField并在textFieldDidBeginEditing方法中检查条件编写选择器代码
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
[self createPickerView];
}
-(void)createPickerView
{
//create Picker Here
}
UIPickerView *picker = [[UIPickerView alloc] init];
picker.delegate = self;
picker.dataSource = self;
textField.inputView = picker;