【问题标题】:TextInput Field with Pickerview instead of keyboard使用 Pickerview 而不是键盘的 TextInput 字段
【发布时间】:2011-09-05 09:57:24
【问题描述】:

我想为特定文本字段添加选择器视图而不是键盘,并直接在 .m 文件中使用内容填充选择器视图

最简单的方法是什么?

我可以直接在界面生成器中执行此操作,还是必须自己添加很多代码?

【问题讨论】:

    标签: c# ios objective-c xamarin.ios uipickerview


    【解决方案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;
        }
    }
    

    【讨论】:

    • 感谢您的指导。只有几个厘米。一、pickerTextField.InputView = picker; (而不是情感选择器)。其次,我为 doneButton 添加了一个事件处理程序,以处理设置所选项目的文本字段,因为文本字段没有更新。
    • 谢谢@ctc!我修正了emotionPicker 错字。
    【解决方案2】:

    您可以在 uitextfield 上使用自定义按钮。并且可以触发该按钮被按下的动作。 当pickerview关闭时,只需在文本框中添加选定的文本。

    【讨论】:

      【解决方案3】:

      为该文本字段设置标签并检查 textFieldDidBeginEditing 方法中的条件编写选择器代码。

      【讨论】:

        【解决方案4】:
        - (void)textFieldDidBeginEditing:(UITextField *)textField
        {
            [self createPickerView]; 
        }
        
        -(void)createPickerView
        {
            //create Picker Here
        }
        

        或将按钮放在适当的位置 textfeild 根据它给出不作为。

        【讨论】:

          【解决方案5】:
          UIPickerView *picker = [[UIPickerView alloc] init];
          picker.delegate = self;
          picker.dataSource = self;
          textField.inputView = picker;
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2022-08-05
            • 2017-12-30
            • 2020-04-21
            • 1970-01-01
            • 1970-01-01
            • 2015-02-21
            • 1970-01-01
            相关资源
            最近更新 更多