当UITextFields
位于UITableViewCell
时,我正在搜索一些优化方法来隐藏背景上的键盘。我已经做了一些代码希望这会对你有帮助。
答案 0 :(得分:1)
我在tableview
包含tableview
时隐藏键盘的textfield
类别为#import <UIKit/UIKit.h>
#import "Utility.h"
@interface UITableView (HitTest)
@end
。
我的标题文件:
#import "UITableView+HitTest.h"
@implementation UITableView (HitTest)
UITableViewCell *activeCell;
-(UIView*) hitTest:(CGPoint)point withEvent:(UIEvent*)event
{
NSInteger iterations = 0;
// check to see if the hit is in this table view
if ([self pointInside:point withEvent:event])
{
UITableViewCell* newCell = nil;
// hit is in this table view, find out
// which cell it is in (if any)
for (UITableViewCell* aCell in self.visibleCells)
{
iterations ++;
if ([aCell pointInside:[self convertPoint:point toView:aCell] withEvent:event])
{
newCell = aCell;
break;
}
}
if (!newCell)
{
for (UIView *view in activeCell.subviews)
{
iterations++;
if ([view isFirstResponder])
{
[view resignFirstResponder];
break;
}
}
}
else
{
activeCell = newCell;
}
NSLog(@"total Iterations:%d",iterations);
}
// return the super's hitTest result
return [super hitTest:point withEvent:event];
}
@end
我的实施档案:
{{1}}
这对我来说很好。
答案 1 :(得分:1)
hittest doest似乎是正确的方法
您可以在tableView所在的View上实现触摸事件,如下所示。
还将textField对象分配给textFieldDidBeginEditing
中的成员变量,这样您就可以重新签名显示keyborad的特定文本字段。
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[textFieldObject resignFirstResponder];
}