键盘回避适用于 UITexField - 现在在 iOS 14 中不可用

Keyboard avoidance worked for UITexField - Not now in iOS 14

提问人:JSA986 提问时间:4/21/2022 更新时间:4/22/2022 访问量:95

问:

在具有许多子类的现有项目上,以及其他基于文本的输入子类可以很好地向上移动 UIScroll() 视图以避免键盘。UITextFieldsUITextViewsself.view

由于 iOS 14 不会为键盘避免而上移,因此其他所有内容(包括 )继续正常工作,但不会。未对代码或委托进行任何更改UITextFieldUIScrollViewUITextViewUITextField

   - (void)scrollToField:(id)field
{
  
    
        if (field != nil && [field isKindOfClass:[UIView class]]) {
           
            UIView *control = (UIView *)field;
            CGFloat y = control.frame.origin.y - 90.0f;
            [self.view setContentOffset:CGPointMake(0, (y < 0 ? 0 : y)) animated:YES];
    
        }
    }

问题似乎是 .我认为 UITextField 不再是 UIView 的一类?根据这个假设,[ & 都改为 .尽管如此,视图仍然没有像以前那样向上移动。UIView *control = (UIView *)field;UIView class]UIView *control = (UIView *)field;UITextField

   - (void)scrollToField:(id)field
{
  
    
        if (field != nil && [field isKindOfClass:[UITextField class]]) {
           
            UITextField *control = (UITextField *)field;
            CGFloat y = control.frame.origin.y - 90.0f;
            [self.view setContentOffset:CGPointMake(0, (y < 0 ? 0 : y)) animated:YES];
    
        }
    }

总而言之,问题是:

iOS 14 中的类是什么?UITextField

如何恢复在 iOS 14 之前移动滚动视图的功能UITextField

iOS Objective-C Cocoa-Touch UITtextField

评论

0赞 DonMag 4/21/2022
要获得这方面的帮助,最好的办法是创建一个最小的可重现示例。让它尽可能简单,只显示这个问题,然后发布代码(比如 GitHub)。

答:

0赞 JSA986 4/22/2022 #1

如果其他人有这种情况,则 -90.0f 的偏移量将略微放在导航栏下方,从而阻止滚动。只需将其调整为 -100.0f 即可在 和 导航栏之间留出间隙,并允许像以前一样滚动行为UITextfieldUITextField