我有一个UIViewController,它有两个分段控制,分别是Takeaway和Delivery,还有5个UITextFields,它们是adressField、stateField、cityField、postcodeField和phoneField。
我想禁用每个UITextfield的用户输入,但phoneField除外,只要用户选择Takeaway,并在用户选择Delivery时启用所有UITextfield。
我的问题是,即使当我记录值时,phoneField也不能工作,phoneField.isEnabled返回YES。当我选择Delivery段时,所有字段都可以工作。我在这里错过了什么?
此外,当用户输入视图时,如何将段Takeaway设置为默认状态?因为目前我需要选择SegmentedControl以使更改生效。
这是我的IBAction代码片段。
- (IBAction)segmentChanged:(id)sender
{
NSLog(@"SEGMENT: %d", [segment selectedSegmentIndex]);
switch ([segment selectedSegmentIndex]) {
case 0:
{
self.navigationItem.title = @"Takeaway";
addressField.enabled = N0;
...
// Enable phoneField here.
phoneField.enabled = YES;
}
break;
case 1:
{
self.navigationItem.title = @"Delivery";
...
}
break;
default:
break;
}
// code to change the opacity of the textfield.
[addressField setAlpha:[segment selectedSegmentIndex]==1 ? 1.0f : 0.3f];
[addressLabel setAlpha:[segment selectedSegmentIndex]==1 ? 1.0f : 0.3f];
[addressBox setUserInteractionEnabled:[segment selectedSegmentIndex]==1];
}发布于 2014-09-30 09:18:30
我想问题是:
[addressBox setUserInteractionEnabled:[segment selectedSegmentIndex]==1];addressBox包含phoneField,对吗?这意味着在整个视图和它的子视图中禁用用户交互。删除这一行并分别处理文本字段。
发布于 2014-09-30 09:28:28
- (void)viewDidLoad {
[super viewDidLoad];
[self.segmentCtrl addTarget:self
action:@selector(segmentChanged:)
forControlEvents:UIControlEventValueChanged];
//Tag=5 is of phoneTextField
[self.view viewWithTag:5].userInteractionEnabled = NO;
}
- (IBAction)segmentChanged:(id)sender
{
int selectedIndex = (int)[self.segmentCtrl selectedSegmentIndex];
NSLog(@"SEGMENT: %d",selectedIndex );
switch (selectedIndex)
{
case 0:
// Takeaway
[self.view viewWithTag:5].userInteractionEnabled = NO;
//Tag=5 is of phoneTextField
break;
case 1:
// Delivery
[self.view viewWithTag:5].userInteractionEnabled = YES;
//Tag=5 is of phoneTextField
break;
default:
break;
}
}https://stackoverflow.com/questions/26116366
复制相似问题