TextInput字段与Pickerview代替键盘

本文关键字:键盘 Pickerview 字段 TextInput | 更新日期: 2023-09-27 18:07:40

我想为特定的文本字段添加一个pickerview而不是键盘,并直接在.m文件

中填充内容的pickerview

实现这一目标最简单的方法是什么?

我可以直接在界面构建器中这样做吗?还是我必须自己添加很多代码?

TextInput字段与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;