Sef*_*an2 13 iphone uibarbuttonitem ios uitextfielddelegate
当用户在uitextfield中写入至少一个字符时,我想在导航栏上启用完成按钮(在模态视图中).我试过了:
[编辑]
解决方案可能是
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
Run Code Online (Sandbox Code Playgroud)
但都没有
[self.navigationItem.rightBarButtonItem setEnabled:YES];
Run Code Online (Sandbox Code Playgroud)
要么
[doneButton setEnabled:YES]; //doneButton is an IBOutlet tied to my Done UIBarButtonItem in IB
Run Code Online (Sandbox Code Playgroud)
工作.
w4n*_*ust 32
正确的代码是;
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSUInteger length = editingTextField.text.length - range.length + string.length;
if (length > 0) {
yourButton.enabled = YES;
} else {
yourButton.enabled = NO;
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
编辑:正如MasterBeta之前和David Lari之后正确指出的那样,该事件应该响应Editing Changed.我正在用David Lari的解决方案更新答案,因为这是标记为正确的解决方案.
- (IBAction)editingChanged:(UITextField *)textField
{
//if text field is empty, disable the button
_myButton.enabled = textField.text.length > 0;
}
Run Code Online (Sandbox Code Playgroud)
Mas*_*eta 18
但是shouldChangeCharactersInRange当用户按下文本字段控件的清除按钮时不会被调用.当文本字段为空时,也应禁用您的按钮.
A IBAction可以与文本字段控件的编辑已更改事件相关联.当用户输入或按清除按钮时,它将被调用.
- (IBAction) editDidChanged: (id) sender {
if (((UITextField*)sender).text.length > 0) {
[yourButton setEnabled:YES];
} else {
[yourButton setEnabled:NO];
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7838 次 |
| 最近记录: |