私も数日前に同じ問題に直面しました。このシナリオの次のコードを記述します。最初にユーザーインタラクションを無効にdataTextfield
しますが、完全に触れていUITableCell
ます。そしてUITouch
、textbegin デリゲート メソッドの代わりに単純なイベント メソッドをオーバーライドします。次のコードを参照してください。
tableviewController.h ファイル内
#import <UIKit/UIKit.h>
#import "CustomTableCell.h"
@class CustomTableCell;
@interface PersonalInfoTableViewController : UITableViewController<CustomTableCellDelegate>{
@property(nonatomic, strong) UITextField *previousTextField;
@end
In tableviewController.m file
@implementation TableViewController
@synthesize previousTextField;
//When you create custom table cell set your CustomcellDelegate = self in tableView:cellForRowAtIndexPath method\
//also assign previousTextField to CustomTableCell textfield
-(void)tableViewTouch{
[previousTextField resignFirstResponder];
}
in CustomTableCell.h file
#import <UIKit/UIKit.h>
@protocol CustomTableCellDelegate
@optional
-(void)tableViewTouch;
@end
@interface CustomTableCell : UITableViewCell<UITextFieldDelegate>
@property(nonatomic, unsafe_unretained) id<CustomTableCellDelegate> delegate;
@property(nonatomic, weak) IBOutlet UITextFiled *theCellTextField;
@end
in CustomTableCell.m file
@synthesize theCellTextField, delegate;
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
//Here my other method to show datepicker in popupViewController on tablecell.
[delegate tableViewTouch];
}
これはARC専用のコードです