にいるときにバックグラウンドタップでキーボードを非表示にする最適化された方法を探していUITextFields
ましたUITableViewCell
。私はいくつかのコードを作成しました。
質問する
1910 次
2 に答える
1
hittestドットを実行するのが正しい方法のようです
以下のように、tableView が存在するビューにタッチ イベントを実装できます。
また、 textField オブジェクトを のメンバー変数に割り当てtextFieldDidBeginEditing
ます。これにより、キーボードが表示される特定のテキスト フィールドを再署名することができます。
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[textFieldObject resignFirstResponder];
}
于 2012-07-06T10:12:30.740 に答える
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
これは私にとってはうまくいきます。
于 2012-06-29T10:45:40.103 に答える