点击UITextField时,移动键盘上方的UIButton

我有3个文本字段和2个button。 当我点击文本字段时,键盘出现,并且由于键盘,2个button被隐藏。 是否可以移动键盘上方的button,以及当键盘退出时,button应该返回到其初始位置。

//Declare a delegate, assign your textField to the delegate and then -(BOOL)textFieldShouldBeginEditing:(UITextField *)textField { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil]; return YES; } - (BOOL)textFieldShouldEndEditing:(UITextField *)textField { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:nil]; [self.view endEditing:YES]; return YES; } - (void)keyboardDidShow:(NSNotification *)notification { // Assign new frame to your view [self.view setFrame:CGRectMake(0,-110,320,460)]; //here taken -20 for example ie your view will be scrolled to -20. change its value according to your requirement. } -(void)keyboardDidHide:(NSNotification *)notification { [self.view setFrame:CGRectMake(0,0,320,460)]; } 

编辑: – 使用[UIScreen mainScreen]边界] .size分配宽度和高度

最好的方法是使用库,这里是链接https://github.com/michaeltyson/TPKeyboardAvoiding ,你需要做的就是把你所有的文本框和button放在UIScrollView中,并在故事板中将scrollview类分配为“TPKeyboardAvoidingScrollView” 。
视图控制器类中的代码行数将为零,以pipe理您的需求,并且您希望在整个应用程序中执行此操作的位置可以类似。

是的,您可以更新视图框架/约束,以便button显示给用户。

此外,你可以创build一个工具栏,将其中的button。 当文本框被聚焦时,您可以在键盘上方添加工具栏。

这将是一个更好的用户体验。

最好使用滚动视图,或者为了您的方便,修改下面的代码。

  override func viewDidLoad() { super.viewDidLoad() let tapGesture = UITapGestureRecognizer(target: self, action: "tap:") view.addGestureRecognizer(tapGesture) self.txtUserEmail.delegate = self; self.txtPassword.delegate = self; } func tap(gesture: UITapGestureRecognizer) { self.txtUserEmail.resignFirstResponder() self.txtPassword.resignFirstResponder() }