Con*_*oob 1 xcode cocoa-touch uitableview ios
我有一个UITableView与相关的UITableViewController.但是,我已经修改了表格,也有一个带有文本字段子视图的视图.
与往常一样,我希望键盘在用户点击"完成"(简单)时以及当他们触摸屏幕以外的任何其他位置时消失(硬盘,卡住!).
实现这一目标的常规方法是将类更改为UIControl,以便它可以处理操作......但我不能为我的UITableView/UITableViewController组合执行此操作.
我怎么解决这个问题?
你可以通过UITapGestureRecognizer
在视图中添加一个来处理用户触摸.
例如,如果你不想在你的tableView中启用行选择你调用self.tableView.allowsSelection = NO;
但是如果你仍然想要检测用户触摸你添加UITapGestureRecognizer
到tableView(或tableView.superview).
如果你实施的话,你可以有更多的控制权UIGestureRecognizerDelegate
,这样你就可以检测到然后选择接触和巫婆接触.
要做到这一点,只需将此代码添加到您的UITableViewController
:
- (void)viewDidLoad
{
[super viewDidLoad];
self.tableView.allowsSelection = NO;
UITapGestureRecognizer *tgr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTapped:)];
tgr.delegate = self;
[self.tableView addGestureRecognizer:tgr]; // or [self.view addGestureRecognizer:tgr];
[tgr release];
}
- (void)viewTapped:(UITapGestureRecognizer *)tgr
{
NSLog(@"view tapped");
// remove keyboard
}
Run Code Online (Sandbox Code Playgroud)
//这是可选的,它让你选择接收的女巫触摸,例如在这里我正在检查用户是否已经点击了textField
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([touch.view isKindOfClass:[UITextField class]]) {
NSLog(@"User tapped on UITextField");
}
return YES; // do whatever u want here
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8992 次 |
最近记录: |