我正在制作一个普通视图,用户可以在其中更新其个人资料。我按照这些步骤制作了该视图
- 使用xib文件
创建了一个新的UIViewController
- 在超级视图中添加了
UIScrollView
- 添加了近9个
UITextField
和1个小UIWebView
- 顶级
醇>UITextField
等满意的Autolayout限制将具有顶部,左侧,右侧和高度限制,并且对于以下所有内容都相同 控件但最后UITextField
有顶部,左侧,右侧,底部和高度 约束
现在应用并满足所有约束但是当我运行视图然后尝试通过拖动UITextField
滚动时滚动视图不滚动但是如果我从UITextField
以外的某个区域滚动滚动然后滚动非常好。谁能告诉我可能是什么主要问题?
注意:除了设置xib文件之外,没有其他代码。 此链接https://www.dropbox.com/s/7oqry8yzd9twnp1/TestScroll.zip?dl=0
上提供了一个示例项目
答案 0 :(得分:2)
重写UIScrollView touchesShouldCancelInContentView
方法将解决此问题。
根据Apple touchesShouldCancelInContentView之前的调用 如果触摸已经传递到子视图,则滚动开始 滚动视图。如果它返回NO,则触摸将继续 传递到子视图并且不会滚动。
默认情况下,如果view为UIControl
,则此方法返回NO。因此,UIControls不会发生滚动。
如果我们从此方法返回YES,则触摸将不会传递到子视图,因此将进行滚动。
所以覆盖UIScrollView touchesShouldCancelInContentView
,如下所示
@interface MyScrollView : UIScrollView
@end
@implementation MyScrollView
- (BOOL)touchesShouldCancelInContentView:(UIView *)view{
return YES;
}
@end
注意:touchesShouldCancelInContentView
方法仅在我们将canCancelContentTouches
属性设置为YES
希望这有帮助。
答案 1 :(得分:1)
您需要为ScrollView中的所有文本字段添加额外的父视图。
注意:
为UIView w.r.t提供约束。 UIScrollView作为前导,尾随,顶部,底部和相等宽度。
另外,请不要忘记在UIView w.r.t中添加最后一个对象的底部约束。 UIView(将其自定义为大约30,因为它不会 完成内容后滚动很多。)
将UIView底部w.r.t UIScrollView的约束自定义为0。
答案 2 :(得分:0)
为UIScrollView将delayContentTouchesProperty设置为YES。如果您触摸UIScrollView的内容,这将允许您滚动。 您可以通过编程方式或从故事板中执行此操作。
答案 3 :(得分:0)
你应该在uiscrollView上使用uiview作为超级视图,将所有文本字段放在uiview上,并确保在uiview上对uiscrollView应用所有令人满意的约束。