使用UIPicker视图的UITextfield问题

时间:2017-09-30 07:34:52

标签: ios objective-c iphone uitextfield uipickerview

Here is image of view 我有以下问题。 我为用户创建了一个示例用户信息表单。他填写了一些细节并提交。请参阅上面屏幕截图中的第一个子图像。

我在这里输入名字和姓氏,当我通过滚动视图或使用键盘上的键盘下一个按钮手动将名字切换到姓氏时,会出现普通键盘。

然后,当点击代码文本字段时,会出现一个uipickerview / UIActionsheet。请看上一张图片。

工作正常。当我将一个firstname文本字段移动到姓氏文本字段并从lastname移动到代码文本字段时。

问题:我的问题是,假设我现在是姓氏文本字段,即我输入我的姓氏,然后点击代码文本字段,问题即将来临。看到下图。Here is my problem

所以在这里,键盘出现以及uipickerview / UIactionsheet也即将出现,但在behing键盘。我不知道它会来。 不仅代码文本字段的姓氏形成第一个名称tp代码文本字段或电子邮件文本字段代码文本字段...同样的问题只有当我通过滚动/切换移动到一个文本字段到下一个字段时才会出现。如果我使用键盘上的下一个按钮,它就是移动和工作文件。

有人帮我解决这个问题。

这是我的代码,

@interface CreateTicketViewController ()

- (void)countryCodeWasSelected:(NSNumber *)selectedIndex element:(id)element;

@end

@implementation CreateTicketViewController


- (IBAction)countryCodeClicked:(id)sender {
    [self removeKeyboard];

    [ActionSheetStringPicker showPickerWithTitle:NSLocalizedString(@"Select CountryCode",nil) rows:_countryArray initialSelection:0 target:self successAction:@selector(countryCodeWasSelected:element:) cancelAction:@selector(actionPickerCancelled:) origin:sender];
}


- (void)actionPickerCancelled:(id)sender {
    NSLog(@"Delegate has been informed that ActionSheetPicker was cancelled");
}


- (void)countryCodeWasSelected:(NSNumber *)selectedIndex element:(id)element{
    // self.selectedIndex = [selectedIndex intValue];

    //may have originated from textField or barButtonItem, use an IBOutlet instead of element
    self.codeTextField.text = (_codeArray)[(NSUInteger) [selectedIndex intValue]];
}



#pragma mark - UITextFieldDelegate

- (void)textFieldDidBeginEditing:(UITextField *)textField {
if (textField==_codeTextField) {
        [_codeTextField resignFirstResponder];
         _codeTextField.tintColor = [UIColor clearColor];
        [self removeKeyboard];

        [ActionSheetStringPicker showPickerWithTitle:NSLocalizedString(@"Select CountryCode",nil) rows:_countryArray initialSelection:0 target:self successAction:@selector(countryCodeWasSelected:element:) cancelAction:@selector(actionPickerCancelled:) origin:self.view];
         //return NO;
    }

以下是removeKeyboard的方法。

UIToolbar *toolBar= [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 44)];
    UIBarButtonItem *removeBtn=[[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStylePlain  target:self action:@selector(removeKeyBoard)];


-(void)removeKeyboard{
    [_emailTextField resignFirstResponder];
   // [_mobileTextField resignFirstResponder];
  //  [_msgTextField resignFirstResponder];
    [_subjectTextField resignFirstResponder];
    [_firstNameTextField resignFirstResponder];


}

2 个答案:

答案 0 :(得分:1)

再次提出同样的问题,检查我的解决方案..!我已经为此发布了答案。 https://stackoverflow.com/a/46903445/8174920

答案 1 :(得分:0)

你必须这样做:

_codeTextField.inputView = YOURPICKER