我剛剛遇到了與原始發佈完全相同的問題。我通過創建UITableView的子類並覆蓋「touchesBegan」方法來解決這個問題。我還創建了一個協議,以便UITableView可以在UITableViewController上調用一個方法,這最終是我想要處理「touchesBegan」事件的地方。
下面是UITableView的亞型頭:
@protocol AGSTableViewDelegate;
@interface AGSTableView : UITableView
@property (nonatomic, weak) id<AGSTableViewDelegate> agsDelegate;
@end
@protocol AGSTableViewDelegate<NSObject>
-(void)tableViewTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
@end
與實現
@implementation AGSTableView
@synthesize agsDelegate;
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesBegan:touches withEvent:event];
if (agsDelegate)
[agsDelegate tableViewTouchesBegan:touches withEvent:event];
}
@end
最後,從UITableViewController中的代碼片段:
@interface AGSWasteUpdateTableController()<AGSTableViewDelegate>
@end
- (void)viewDidLoad
{
AGSTableView *tableView = (AGSTableView *)[self tableView];
tableView.agsDelegate = self;
}
-(void)tableViewTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[yourTextField resignFirstResponder];
}
希望這有助於.. 。
嘿,感謝您的回覆。我做了一個新的XCode導航項目,並在UITableViewController子類中添加了touchesbegan方法(沒有改變其他任何東西),但它不起作用 – sumderungHAY 2011-06-09 01:03:01
是的,我也看到了這種行爲 - 更新了我的答案。 – zpasternack 2011-06-09 04:52:45
感謝您的詳細解答。基本上,我有一個UIKeyboardTypeNumber類型的UITextField,我想在用戶點擊屏幕上的任何地方時退出第一響應者(關閉鍵盤)。 – sumderungHAY 2011-06-09 06:24:44