我正在使用TPKeyboardAvodingScrollView
class来确保键盘永远不会弹出UITextField
。然而,iPhone上有一些奇怪的错误,当我点击UITextField
文本字段上升但是太高时:
在GitHub链接上,Notes说:
注释
这些类目前将contentInset参数调整为 避免内容在键盘下移动。这样做,而不是 调整框架,以解决导致的iOS错误 在一个生涩的动画中,视图在稳定之前向上跳跃 下。为了便于此解决方法,contentSize是 保持与视图框架的大小至少相同。
也许它与此有关,我只是不确定如何解决这个问题。
我已经尝试更改此行:
[self setContentOffset:CGPointMake(self.contentOffset.x,
[self idealOffsetForView:firstResponder withSpace:[self keyboardRect].origin.y - self.bounds.origin.y])
with(add +100):
[self setContentOffset:CGPointMake(self.contentOffset.x,
[self idealOffsetForView:firstResponder withSpace:[self keyboardRect].origin.y - self.bounds.origin.y+100])
但这不是一个很好的方法,因为这不适用于iPad。
答案 0 :(得分:1)
最近有同样的问题。对我来说,解决方案是修改 - (CGFloat)idealOffsetForView:(UIView *)视图withSpace:(CGFloat)空间方法。以下是我在项目中的表现:
-(CGFloat)idealOffsetForView:(UIView *)view withSpace:(CGFloat)space {
// Convert the rect to get the view's distance from the top of the scrollView.
CGRect rect = [view convertRect:view.bounds toView:self];
// Set starting offset to that point
CGFloat offset = rect.origin.y;
if ( view.bounds.size.height < space ) {
// Center vertically if there's room
offset -= floor((space-view.bounds.size.height)/2.0);
}
if ( offset + space > self.contentSize.height ) {
// Clamp to content size
offset = self.contentSize.height - space;
}
if (offset < 0) offset = 0;
return offset;
}
更改是从条件块中移除第一条路径:if(self.contentSize.height - offset&lt; space)并且只留下&#34;否则&#34;路径。