【发布时间】:2012-04-03 19:21:20
【问题描述】:
我正在开发一个带有购物车的 iPhone 应用程序,并且我正在使用 UITableView 来显示购物车。每个项目都有一个单元格,-tableFooterView 设置为自定义视图,该视图为用户提供了一个文本字段来验证其信用卡的 CVV 和一个完成结帐过程的按钮。
当用户点击 CVV 文本字段时,我会调整表格视图的大小,以便键盘不会覆盖任何内容。
- (void)keyboardWillShow:(NSNotification *)n
{
// I'll update this to animate and scroll the view once everything works
self.theTableView.frameHeight = self.view.frameHeight - KEYBOARD_HEIGHT_PORTRAIT_IPHONE;
}
输入 CVV 后,用户可以点击 Done 键关闭键盘:
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return NO;
}
所有这些都有效,但是,当键盘可见时,我的结帐按钮(一个普通的 UIButton)不响应触摸事件。表格滚动,但按钮的 touchUpInside 事件从未触发。
一旦我点击完成并关闭键盘,结帐按钮将识别 touchUpInside 事件。
据我所见,在键盘关闭之前,键盘覆盖的任何按钮似乎都不会响应我的触摸(即使它从键盘后面滚动出来)。同一 -tableFooterView 中从未被键盘覆盖的按钮在键盘可见时仍可响应触摸。
在 iOS 5 和 iOS 4 上运行时的行为相同。
任何人都可以就可能发生的事情提供任何建议吗?或者对故障排除有什么有用的想法?
谢谢!
编辑 - 更新
实际上,tableFooterView 被键盘覆盖的部分并没有响应触摸事件。在我的自定义 UIView 子类中,我实现了 -touchesBegan:withEvent: 并记录了发生了触摸。
在显示键盘之前,触摸视图中的任何位置都会获得一条日志语句。但是,tableview 调整大小后,只有触摸视图的上部才会生成日志语句。
另外我刚刚意识到,一旦我滚动该部分可见,被键盘覆盖的 tableFooterView 部分就会变成包含视图的背景颜色的颜色。
【问题讨论】:
-
你找到解决办法了吗?
-
@rishi 你找到解决方法了吗? :)
-
@vburojevic 是的,但解决方案有点奇怪:),我将其作为答案发布
标签: iphone ios uitableview uiview uiscrollview