UIScrollView中的iOS UITextField没有响应

Posted

技术标签:

【中文标题】UIScrollView中的iOS UITextField没有响应【英文标题】:iOS UITextField in UIScrollView not responding 【发布时间】:2013-08-16 18:21:25 【问题描述】: 我有一个 ScrollView(来自 xib 文件),它按预期工作。 在我的 ScrollView 中,我有一个 UIView(比滚动视图小一点)。 UIView 有 userInteractionEnabled = YES 在我的 UIView 内部是一个 UITextField,它位于 UIView 的中间。

textField 仅在 textfield 的框架位于 UIView 顶部时响应触摸。例如,当我将框架设置为 (0,0,280,100) 时,文本字段会响应。但是对于一个框架(0,100,280,100)它不起作用。

TextField 的高度为 100。但它只在 textField 的上部响应。

这是“不工作”的代码(在 ios 7 beta 5 上开发)。感谢您的帮助!

page1 = [[UIView alloc] initWithFrame: CGRectMake(5, 5, scrollView.frame.size.width-10,self.scrollView.frame.size.height-10)];

userNameInput = [[UITextField alloc]initWithFrame:CGRectMake(6, 6, 280, 100)];
[userNameInput setCenter:CGPointMake(page1.frame.size.width / 2, page1.frame.size.height / 2.5f)];
[userNameInput setTextAlignment:NSTextAlignmentCenter];
[userNameInput setTextColor:[UIColor whiteColor]];

userNameInput.enabled = YES;
userNameInput.userInteractionEnabled = YES;
userNameInput.placeholder = @"Enter...";
userNameInput.autocorrectionType = UITextAutocorrectionTypeNo;
userNameInput.keyboardType = UIKeyboardTypeDefault;
userNameInput.returnKeyType = UIReturnKeyDone;
userNameInput.clearButtonMode = UITextFieldViewModeWhileEditing;
userNameInput.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
userNameInput.font = [SystemUtils getSystemFontWithTextSize:30.0f];
userNameInput.delegate = self;
userNameInput.tag = 1;

page1.userInteractionEnabled = YES;
[page1 addSubview:userNameInput];

[userNameInput setBackgroundColor:[UIColor blueColor]];
[page1 setBackgroundColor:[UIColor redColor]];
[scrollView setBackgroundColor:[UIColor greenColor]];

[self.scrollView addSubview:page1];

【问题讨论】:

【参考方案1】:

你需要告诉滚动视图它的内容大小是多少(大概在这种情况下,你希望它与 page1 UIView 相同):

[self.scrollView setContentSize:page1.bounds.size];
[self.scrollView addSubview:page1];

【讨论】:

我假设这段代码来自您的UIViewController?这是取自哪个方法?您对 page1 对象的分配可能会设置为您期望的帧大小(即宽度和高度为 0.0) 对对!代码在我的视图控制器的“viewDidLoad”中。我认为帧大小是正确的。我为每个元素(UIScrollView、UIView 和 UITextField)设置了背景颜色,看起来一切都合适。也没有重叠。每个矩形都在另一个矩形内。 嗯,你有 something 重叠或剪辑,并导致 UITextField 对象无法接收触摸。但是,我看到您设置了背景颜色以帮助直观地确认这一点,并且您说您什么也没看到。包含您的 UIScrollView 的层次结构中的视图如何(或者您的 UIScrollView 是视图控制器的根视图)?你检查过这些是预期的尺寸吗? 根据您提供的少量信息(即代码在viewDidLoad 中,并且该项目可能是(?)使用 Xcode 5 Beta 5 创建的,这意味着您正在使用 Storyboards 等),我创建了从头开始一个项目并将您的代码粘贴到其中,它运行良好。因此,我建议显示更多与此问题相关的课程代码,并提供更多详细信息以帮助我们帮助您。

以上是关于UIScrollView中的iOS UITextField没有响应的主要内容,如果未能解决你的问题,请参考以下文章

切换uitextf时停止键盘关闭

iOS - UIScrollView 中的按钮点击动画

iOS:无法在分页的 UIScrollView 中的 UITableView 之间滚动

iOS中的UIScrollView不响应滚动到顶部

iOS中的水平UIScrollView和数百个缩略图?

iOS 5 中的 UIScrollView layoutSubviews 行为变化?