2016-01-13 130 views
0

在我的应用我有不同TextFieldsUsernameName,在Password的XCode文本字段隐藏键盘

我使用以下textfields年龄,性别和地区作为ActionSheet采摘。我面临的问题是当我输入password字段并移动到选择年龄时,键盘不会隐藏在第一次点击本身。在键盘隐藏之后,我必须再次点击年龄段。

任何一个可以帮我解决这个问题

- (BOOL)textFieldShouldBeginEditing:(LRTextField *)textField { 
    NSLog(@"Tag %ld",(long)textField.tag); 
    if (textField.tag == 3){ 
    return NO; 
    } else if (textField.tag == 4){ 
    return NO; 
    } else if (textField.tag==5){ 
    return NO; 
    } else if (textField.tag==6){ 
    return NO; 
    } 
    return YES; 
} 

我使用LTTextFieldtextfield验证。

+0

替代解决方案:不是文本框的年龄,性别和地区,使用UIButtons。 –

+0

'resignFirstResponder:'在哪里? 'textFieldShouldBeginEditing:'如果返回'NO',那么这将阻止编辑,但它不会退出已经聚焦的'textField'。 – TheTiger

回答

0

按照下面的步骤

做一个简单的按钮上pickerview文本框

添加动作

- (IBAction)hidekey:(id)sender { 


    [self.view endEditing:YES]; 
    [_yourpickerview setHidden:NO]; 

} 

这里所有的文本框resignFirstResponder

所以,当你永远是textfield键盘上移动将隐藏和pickerview显示

希望对你的工作

+0

谢谢我已经解决了这个问题,当这个动作被称为 - (IBAction)selectAge:(UIControl *)发件人{这里把结束编辑代码}这已经解决了我的问题。我想这是解决这个问题的最佳方法 –

+0

是的,这也是不错的方法:)) –

+0

无需写每个文本字段resignFirstresponser @RushangPrajapati。只需要在该IBAction方法上的一行代码。 – Jaimish

0

您可以使用resignFirstResponder

func textFieldShouldReturn(textField: UITextField) -> Bool { 

    if textField.tag = passwordTag { 
     textField.resignFirstResponder()   
    } 
    return true 
} 
0

我有同样的问题,我做了这个小片的代码在移动每个IPhone正确的位置。 在您的viewDidLoad:

[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(keyboardDidShow:) 
               name:UIKeyboardDidShowNotification 
               object:nil]; 

    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(keyboardDidHide:) 
               name:UIKeyboardWillHideNotification 
               object:nil]; 

而且刚过:

- (void)keyboardDidShow: (NSNotification *) notif{ 
     CGSize keyboardsize = [[[notif userInfo]objectForKey:UIKeyboardFrameBeginUserInfoKey]CGRectValue].size; 
     [UIView beginAnimations:nil context:NULL]; 
     [UIView setAnimationDuration:0.25]; 
     long moveScreen = ((long)(keyboardsize.height) - (long)(self.view.frame.size.height) + 465) * -1; 
     if (moveScreen > 0) 
      moveScreen = 0; 
     self.view.frame = CGRectMake(rect.origin.x,moveScreen,rect.size.width,rect.size.height); 
     [UIView commitAnimations]; 
    } 

    - (void)keyboardDidHide: (NSNotification *) notif{ 
     [UIView beginAnimations:nil context:NULL]; 
     [UIView setAnimationDuration:0.25]; 
     self.view.frame = rect; 
     [UIView commitAnimations]; 
    } 
0
 func textFieldShouldReturn(textField: UITextField) -> Bool { 

       if textField == self.emailField { 
        self.usernameField.becomeFirstResponder() 
       } 
       else if textField == self.usernameField { 
        self.nameField.becomeFirstResponder() 
       } 
       else if textField == self.nameField { 
        self.passwordField.becomeFirstResponder() 
       } 

       else if textField == self.passwordField { 
        self.ageField.becomeFirstResponder() 
        self.ageField.resignFirstResponder(); 
       } 

       return true; 
       } 

化妆ageTextField那么第一个响应者辞职第一响应