我在ViewController中有四个文本字段,并希望禁用其中两个键盘(textField1和textField2)。
在viewDidLoad
中将文本字段指定为委托后,我尝试实现以下功能- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField) {
if ([self.textField1 isTouchInside] || [self.textField2 isTouchInside] {
return NO;
} else {
return YES;
}
}
但是,这会完全禁用ViewController的键盘,因此在尝试编辑textField3和textField4时不会显示。我怎样才能解决这个问题呢?
例如,有没有办法在textField上编辑结束后再次刷新运行textFieldShouldBeginEditing方法?
另外,我知道我可以创建一个标签来完成类似的事情,但我更喜欢在我的案例中使用文本字段。
编辑:所以我遗漏了一个很大的细节。我在按下textField1和2时正在触发IBaction。然而,Lootsch的回答给了我一个想法。在textField1 / 2Pressed IB动作中,我运行了textfield.enable:NO方法,然后当我触发向文本域提交数据的第二个动作时重新启用它们,如下面的
- (IBAction)textField1Pressed:(id)sender {
self.textField.Enabled = NO;
}
- (IBAction)submitToTextField1:(id)sender {
self.textField.text = @"blah blah";
self.textField.Enabled = YES;
}
虽然这需要两个人进入退出行动,但它对我有用。此外,我没有必要使用此解决方案来操作textFieldShouldBeginEditing方法。
答案 0 :(得分:1)
你应该禁用这两个textFields(在代码中或通过IB),或者你可以禁用用户交互(不同的外观,相同的功能):
textField3.enabled = NO;
textField4.enabled = NO;
或者:
textField3.userInteractionEnabled = NO;
textField3.userInteractionEnabled = NO;
第二种方法不会改变UITextField的外观,而第一种方法将表明这些TextFields被禁用。
答案 1 :(得分:0)
应该做的事
if (textField==textField1 || textField==textField2) [textField resignFirstResponder];
答案 2 :(得分:0)
请试试这个
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
if (textField==self.textField1 || textField==self.textField2)
{
return NO;
}
else
{
return YES;
}
}
答案 3 :(得分:0)
- (BOOL)textFieldShouldBeginEditing:(UITextField *)mytextField
{
if((mytextField.tag == 104) || (mytextField.tag == 105) || (mytextField.tag == 106))
{
if(mytextField.tag == 104)
{
point = 50;
// if(textField1.tag == 4)
{
[self showDatePickerWithTitle:@"Select DOB"];
return NO;
}
//
}
}
else
{
retutn YES;
}
//you can also try this piece of code.With tag property of textfield.And make sure your tag is not zero,because the default tag is 0 for the main view.