奇怪的UIScrollView行为

时间:2016-08-04 03:10:24

标签: ios swift xcode uiscrollview

因为这个问题很难描述,所以我为一个简单的Xcode项目here创建了一个GitHub repo来演示这个问题。

简而言之,我在UIScrollView中有一个注册表单,在某种情况下会使视图半无响应(即按钮动作未触发)。重现的步骤是手动选择每个UITextField并按“完成”。键盘上的按钮,用于关闭最后一个字段。这一系列的用户输入似乎是重现行为的唯一方法。

我设法通过黑客来解决问题,以重置滚动视图的内容偏移量以响应keyboardWillHide通知,但这会导致滚动位置的可见跳转。

任何人都对这里发生的事情有任何想法?我花了2天的时间对此进行调查,我完全不知道发生了什么。非常感谢这里的一些帮助!

3 个答案:

答案 0 :(得分:1)

我会建议如下:

  • 摆脱“中心scrollview”的东西。这是错的。如果您想垂直居中,请将其放在内容视图中并使用自动布局。

  • 检测UIKeyboardWillShowNotification,而非WillChange。

  • 摆脱你的“破解使其成功”。

答案 1 :(得分:0)

无法回应您的观点背后的原因是内容大小未正确设置。设置滚动视图中放置的background color of view。同时设置background color of scrollview。你会得到这个想法,一些文本域是out of contentsize区域。这就是为什么它变得没有反应。

如果您仍然面临这个问题,请告诉我。它将解决您的问题: - )

修改

在这里,您可以使用所需的工作代码: - )

https://www.sendspace.com/file/k5v9uy

答案 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可以自动解决您的问题。