键盘回避对 UITexField 有效 - iOS 14 现在不适用
Keyboard avoidance worked for UITexField - Not now in iOS 14
在现有项目中有许多子classed UITextFields
、UITextViews
和其他基于文本的输入子classes 移动一个 UIScroll (self.view
) 很好地查看以避免键盘输入。
由于 iOS 14 UITextField
不会向上移动 UIScrollView
以避免键盘输入,因此其他所有内容 UITextView
仍然可以正常工作 UITextField
才不是。没有对代码或委托进行更改
- (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];
}
}
问题似乎是 UIView *control = (UIView *)field;
。我认为 UITextField 不再是 UIView 的 class 了?在此假设下,[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];
}
}
综上所述,问题是:
什么是 UITextField
iOS 14 中的 class?
如何在 iOS 14
之前恢复 UITextField
移动滚动视图的功能
万一其他人有这个,-90.0f 的偏移量将 UITextfield
放置在导航栏略微下方以防止滚动。只需将其调整为 -100.0f 即可在 UITextField
和导航栏之间留出间隙,并允许像以前一样的滚动行为
在现有项目中有许多子classed UITextFields
、UITextViews
和其他基于文本的输入子classes 移动一个 UIScroll (self.view
) 很好地查看以避免键盘输入。
由于 iOS 14 UITextField
不会向上移动 UIScrollView
以避免键盘输入,因此其他所有内容 UITextView
仍然可以正常工作 UITextField
才不是。没有对代码或委托进行更改
- (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];
}
}
问题似乎是 UIView *control = (UIView *)field;
。我认为 UITextField 不再是 UIView 的 class 了?在此假设下,[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];
}
}
综上所述,问题是:
什么是 UITextField
iOS 14 中的 class?
如何在 iOS 14
之前恢复UITextField
移动滚动视图的功能
万一其他人有这个,-90.0f 的偏移量将 UITextfield
放置在导航栏略微下方以防止滚动。只需将其调整为 -100.0f 即可在 UITextField
和导航栏之间留出间隙,并允许像以前一样的滚动行为