UIScrollView不滚动UItextfields
我正在用户可以更新他们的configuration文件的正常看法。 我遵循这些步骤来expression这种观点
- 用xib文件创build一个新的
UIViewController
- 在超级视图中添加了一个
UIScrollView
- 新增了近9个
UITextField
和1个小UIWebView
- 像上面的
UITextField
一样满足的Autolay约束将有顶部,左边,右边和高度约束,对于所有下面的控件都是一样的,但是最后一个UITextField
有顶部,左边,右边,底部和高度约束。
现在所有的约束都被应用和满意,但是当我运行视图,然后尝试通过拖动UITextField
滚动然后滚动视图不滚动,但如果我通过从UITextField
以外的某个区域拖动滚动,那么它滚动非常好。 有人可以告诉我什么是主要问题?
注意:除了设置xib文件之外,还没有代码。 示例项目位于此链接https://www.dropbox.com/s/7oqry8yzd9twnp1/TestScroll.zip?dl=0
重写UIScrollView touchesShouldCancelInContentView
方法将解决这个问题。
根据苹果touchShouldCancelInContentView被称为滚动开始之前,如果触摸已被传递到滚动视图的子视图。 如果返回NO,则触摸将继续传递给子视图,滚动不会发生。
默认情况下,如果view是一个UIControl
这个方法返回NO。 所以UIControls不会发生滚动。
如果我们从这个方法返回YES,那么触摸将不会被传递给子视图,所以滚动将会发生。
所以重写UIScrollView touchesShouldCancelInContentView
就像下面这样
@interface MyScrollView : UIScrollView @end @implementation MyScrollView - (BOOL)touchesShouldCancelInContentView:(UIView *)view{ return YES; } @end
注: touchesShouldCancelInContentView
方法只有在将canCancelContentTouches
属性设置为YES时才会调用
希望这可以帮助。
您需要为ScrollView中的所有文本字段添加额外的父视图。
注意:
为UIView提供UIScrollView作为Leading,Trailing,Top,Bottom和Equal Width的约束。
另外不要忘记添加UIView中的最后一个对象的底部约束与UIView(自定义它大约30,因为它将不会完成内容后滚动很多)。
将UIView底部的UIScrollView的约束自定义为0。
看到:
为UIScrollView设置delayContentTouchesProperty为YES。 这将让你滚动,如果你触摸UIScrollView的内容。 您可以通过编程或故事板来完成。
你应该在uiscrollView上使用uview作为superview,把所有的textfield放在uiview上,并且确保你在uview上应用了所有满意的约束。