2016-08-04 79 views
0

因为这个问题很难描述,所以我创建了一个GitHub仓库来为一个裸露的骨骼Xcode项目here演示这个问题。奇怪的UIScrollView行为

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

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

任何人对此处发生了什么有什么想法?我花了2天的时间来调查这件事情,并且对于发生的事情我完全丧失了信心。真的很感谢这里的一些帮助!

+0

无关的工作代码,但你并不需要一个'破'在'switch'的每个'case'结尾。这是Swift,而不是C. – matt

+0

@matt洛尔公平点:) – doovers

+0

我不能重现这个问题。你能给更好的指示吗? – matt

回答

1

我会建议如下:

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

  • 检测UIKeyboardWillShowNotification,而不是WillChange。

  • 摆脱你的“黑客让它工作”。

+0

我发布了一个YouTube视频,表明它在我进行这些更改时可以正常工作:https://youtu.be/ZQqJ6-PfR6k – matt

+0

我也按照您的新指示进行了操作,但仍然无法重现问题。注册按钮仍然有效。 – matt

+0

现在我明白你的意思了。是的,该按钮仍然是响应式的,但它不会触发该操作。点击它后,控制台中应该有一个打印语句。此外,文本字段变得无响应。 – doovers

-1

每当UITextField成为第一响应者时,将调用UIKeyboardWillHideNotification。因此,在UITextFieldDelegate中计算内容偏移量将非常困难。你可能会认为键盘总是在那里,但当你改变响应者时它会改变。 UITableViewController可以自动解决你的问题。

0

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

让我知道你是否仍然面临这个问题。这将解决您的问题:-)

编辑

在这里你去,你想:-)

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

+0

您的登录和注册按钮位于内容区域下方。 –

+0

你在测试什么尺寸的屏幕?我使用iPhone 6,对我来说似乎很好? – doovers

+0

我在说一般。你能告诉我你的故事板吗?我可以指导你做错了什么。 –