因为这个问题很难描述,所以我为一个简单的Xcode项目here创建了一个GitHub repo来演示这个问题。
简而言之,我在UIScrollView
中有一个注册表单,在某种情况下会使视图半无响应(即按钮动作未触发)。重现的步骤是手动选择每个UITextField
并按“完成”。键盘上的按钮,用于关闭最后一个字段。这一系列的用户输入似乎是重现行为的唯一方法。
我设法通过黑客来解决问题,以重置滚动视图的内容偏移量以响应keyboardWillHide
通知,但这会导致滚动位置的可见跳转。
任何人都对这里发生的事情有任何想法?我花了2天的时间对此进行调查,我完全不知道发生了什么。非常感谢这里的一些帮助!
答案 0 :(得分:1)
我会建议如下:
摆脱“中心scrollview”的东西。这是错的。如果您想垂直居中,请将其放在内容视图中并使用自动布局。
检测UIKeyboardWillShowNotification,而非WillChange。
摆脱你的“破解使其成功”。
答案 1 :(得分:0)
无法回应您的观点背后的原因是内容大小未正确设置。设置滚动视图中放置的background color of view
。同时设置background color of scrollview
。你会得到这个想法,一些文本域是out of contentsize
区域。这就是为什么它变得没有反应。
如果您仍然面临这个问题,请告诉我。它将解决您的问题: - )
修改强>
在这里,您可以使用所需的工作代码: - )
答案 2 :(得分:-1)
每当@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set by <content src="index.html" /> in config.xml
loadUrl(launchUrl);
// disable the context menu and all long clicks
super.appView.getView().setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v)
{ return true; }
});
super.appView.getView().setLongClickable(false);
}
}
成为第一响应者时,UITextField
将会调用。因此,在UIKeyboardWillHideNotification
中计算内容偏移量非常困难。您可能认为键盘始终存在,但是当您更改响应器时它会发生变化。 UITextFieldDelegate
可以自动解决您的问题。