简体   繁体   English

如何自动移动UIScrollView以使UITextfield基于键盘可见?

[英]How to move UIScrollView automatically to make UITextfield visible based on keyboard?

How to make a UITextField move up when keyboard is present? 如何在键盘存在时使UITextField向上移动? - I have tried all the methods proposed in here, but my scrollview is not moving up based on keyboard. - 我已经尝试了这里提出的所有方法,但我的scrollview没有基于键盘向上移动。 I want to implement the movement like in iPad notes as the text come close to keyboard, the document moves up. 我想在iPad笔记中实现移动,因为文本接近键盘,文档向上移动。

Here is how I do that. 我就是这样做的。 Don't forget to set delegate on UITextField 不要忘记在UITextField上设置委托

- (void) scrollViewAdaptToStartEditingTextField:(UITextField*)textField
{
    CGPoint point = CGPointMake(0, textField.frame.origin.y - 1.5 * textField.frame.size.height);
    [scrollView setContentOffset:point animated:YES];
}

- (void) scrollVievEditingFinished:(UITextField*)textField
{
    CGPoint point = CGPointMake(0, 0);
    [scrollView setContentOffset:point animated:YES];
}

- (BOOL) textFieldShouldBeginEditing:(UITextField *)textField
{
    [self scrollViewAdaptToStartEditingTextField:textField];
    return YES;
}

- (BOOL) textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    [self scrollVievEditingFinished:textField];
    return YES;
}

here is swift 3.0 version 这是swift 3.0版本

func scrollViewAdapt(toStartEditing textField: UITextField) {
        let point = CGPoint(x: CGFloat(0), y: CGFloat(textField.frame.origin.y - 1.7 * textField.frame.size.height))
        scrollView.setContentOffset(point, animated: true)
    }

    func scrollVievEditingFinished(_ textField: UITextField) {
        let point = CGPoint(x: CGFloat(0), y: CGFloat(0))
        scrollView.setContentOffset(point, animated: true)
    }
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {

        self.scrollViewAdapt(toStartEditing: textField)
        return true
    }

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        self.scrollVievEditingFinished(textField)
        return true
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM