The*_*imp 4 objective-c uitextfield uitoolbar ios
我有一个动态的数字UITextFields都有一个inputAccessoryView.它由UIToolbar一个按钮组成.按下此按钮时,它会调用一个方法,但是,在此方法中,我需要能够访问底层UITextField.
请问有人可以告诉我这是怎么回事吗?
// Create the toolbar controls
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(navigationBarDoneButtonPressed:)];
UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
// Setup the toolbar
navigationToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(10.0, 0.0, 310.0, 40.0)];
[navigationToolbar setItems:@[flexibleSpace, doneButton]];
// In a UITableView I create a number of cells which contain UITextFields....
// This is the method that gets called when a user presses the done button
- (void)navigationBarDoneButtonPressed:(id)sender
{
NSLog(@"Based on sender I need to access the underlying UITextField.");
}
Run Code Online (Sandbox Code Playgroud)
您可以跟踪UITextField变量中当前的焦点,并在inputAccesoryView方法中使用该变量:
在你的.h文件中:确保你符合UITextFieldDelegate协议:
@interface MyViewController : UIViewController <UITextFieldDelegate>
Run Code Online (Sandbox Code Playgroud)
并添加此属性:
@property (assign, nonatomic) UITextField *activeTextField;
Run Code Online (Sandbox Code Playgroud)
在.m文件中:创建动态文本字段时:
...
theTextField.delegate=self;
...
Run Code Online (Sandbox Code Playgroud)
并添加UITextFieldDelegate协议的这些实现:
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
self.activeTextField = textField;
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
self.activeTextField = nil;
}
Run Code Online (Sandbox Code Playgroud)
现在,在您调用的方法中inputAccesoryView:
- (void)navigationBarDoneButtonPressed:(id)sender{//Just an example
self.activeTextField.text=@"Test";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3641 次 |
| 最近记录: |