sum*_*HAY 8 cocoa-touch objective-c uitableview uiviewcontroller uiresponder
我在我的UITableViewController子类中定义了这个方法:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesBegan:touches withEvent:event];
NSLog(@"touch began");
}
Run Code Online (Sandbox Code Playgroud)
但它没有被触发.UIViewController是UIResponder的子类,所以它应该可以工作,对吧?谢谢
小智 5
如果你试图解雇UITableViewController中的键盘,一个不错的解决方案是在tableView委托的didSelectRowAtIndexPath方法中调用resignFirstResponder.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[myTextField resignFirstResponder];
// Rest of your actual didSelectRowAtIndexPath code ...
}
Run Code Online (Sandbox Code Playgroud)
是的,那绝对应该有效。
\n\n确保为此控制器对应的视图设置“用户交互启用”。
\n\n如果视图是从 nib/xib 加载的,请确保 File\'s Owner 设置为适当的类名,并且 File\'s Owner\'sview
连接文件所有者的出口以正确查看视图。
更新:我也看到了这种行为,使用使用基于导航的应用程序模板构建的应用程序,但使用基于视图的应用程序模板,它可以按预期工作。
\n\n我认为在导航控制器的情况下,嵌入视图控制器中的表视图会在视图控制器之前获取事件。请参阅UIView 参考(重点是我的):
\n\n\n\n\n视图控制器本身是 UIResponder 类的后代,并被插入到托管根视图及其超级视图之间的响应者链中,该超级视图通常属于不同的视图控制器。如果视图控制器\xe2\x80\x99s视图不处理事件,\n 视图控制器本身可以选择在将事件传递给父视图之前\n 处理该事件。
\n
这意味着视图有第一次机会处理该事件,如果确实如此,视图控制器将无法获取它。
\n\n不太清楚你想要完成什么,所以我不确定要提供什么解决方案。
\n 归档时间: |
|
查看次数: |
7582 次 |
最近记录: |