Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios can';当键盘从堆栈溢出显示到工作时,无法获得滚动文本视图的任何响应_Ios_Objective C_Swift - Fatal编程技术网

Ios can';当键盘从堆栈溢出显示到工作时,无法获得滚动文本视图的任何响应

Ios can';当键盘从堆栈溢出显示到工作时,无法获得滚动文本视图的任何响应,ios,objective-c,swift,Ios,Objective C,Swift,我不知道为什么我试图让scrollview向上移动文本视图,使它们在键盘通过堆栈溢出响应显示时保持可见的尝试没有起作用,但对我来说没有。将下面的苹果文档翻译成Swift应该足以让我实现这一点,但我对Objective C的了解还不够,无法做到这一点。有人愿意将以下内容翻译成Swift 3吗 1.// Call this method somewhere in your view controller setup code. - (void)registerForKeyboardNotificat

我不知道为什么我试图让scrollview向上移动文本视图,使它们在键盘通过堆栈溢出响应显示时保持可见的尝试没有起作用,但对我来说没有。将下面的苹果文档翻译成Swift应该足以让我实现这一点,但我对Objective C的了解还不够,无法做到这一点。有人愿意将以下内容翻译成Swift 3吗

1.// Call this method somewhere in your view controller setup code.
- (void)registerForKeyboardNotifications
{
     [[NSNotificationCenter defaultCenter] addObserver:self
            selector:@selector(keyboardWasShown:)
            name:UIKeyboardDidShowNotification object:nil];

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

2. // Called when the UIKeyboardDidShowNotification is sent.
 - (void)keyboardWasShown:(NSNotification*)aNotification
{
NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;

UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0);
scrollView.contentInset = contentInsets;
scrollView.scrollIndicatorInsets = contentInsets;

// If active text field is hidden by keyboard, scroll it so it's visible
// Your app might not need or want this behavior.
CGRect aRect = self.view.frame;
aRect.size.height -= kbSize.height;
if (!CGRectContainsPoint(aRect, activeField.frame.origin) ) {
    [self.scrollView scrollRectToVisible:activeField.frame animated:YES];
    }
}

3.// Called when the UIKeyboardWillHideNotification is sent
    - (void)keyboardWillBeHidden:(NSNotification*)aNotification
     {
    UIEdgeInsets contentInsets = UIEdgeInsetsZero;
    scrollView.contentInset = contentInsets;
    scrollView.scrollIndicatorInsets = contentInsets;
}

给你。不过,我在UIView中使用了这段代码。您应该能够对scrollview进行这些调整

    func addKeyboardNotifications() {
        NotificationCenter.default.addObserver(self,
                                               selector: #selector(keyboardWillShow(notification:)),
                                               name: NSNotification.Name.UIKeyboardWillShow, object: nil)
        NotificationCenter.default.addObserver(self,
                                               selector: #selector(keyboardWillHide(notification:)),
                                               name: NSNotification.Name.UIKeyboardWillHide, object: nil)
    }

    func keyboardWillShow(notification: NSNotification) {

        if let keyboardSize = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
            let duration = notification.userInfo![UIKeyboardAnimationDurationUserInfoKey] as! Double
// if using constraints            
// bottomViewBottomSpaceConstraint.constant = keyboardSize.height
self.view.frame.origin.y -= keyboardSize.height
            UIView.animate(withDuration: duration) {
                self.view.layoutIfNeeded()
            }
        }
    }
    func keyboardWillHide(notification: NSNotification) {

        let duration = notification.userInfo![UIKeyboardAnimationDurationUserInfoKey] as! Double
//if using constraint
//        bottomViewBottomSpaceConstraint.constant = 0
self.view.frame.origin.y += keyboardSize.height
        UIView.animate(withDuration: duration) {
            self.view.layoutIfNeeded()
        }
    }
不要忘记在正确的位置删除通知

func removeKeyboardNotifications() {
    NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillShow, object: nil)
    NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillHide, object: nil)
}