【发布时间】:2014-01-23 13:21:40
【问题描述】:
这只发生在设备上而不是模拟器上。..
我有两个自定义视图,其中都有一个 UITextField(Child1 和 Child2)。 这两个视图都放置在另一个 UIView(比如 viewA)上。 现在我的要求是,当在其中一个文本字段中输入文本时,我需要清除其他文本字段的内容,因此在 textFieldDidChange: 方法中我通知 viewA,然后它遍历其子视图找到 Child1 并设置其属性。但是,一旦我访问此 Child1 的 textField 以启用其 userInteraction 或将其文本设置为 nil。此文本字段现在成为第一响应者。
我不太确定它为什么会这样。您可以查看以下代码以获取更多信息。
viewA 内部的方法:
for (UIView *view in [self subviews])
{
if ([view isKindOfClass:[ChildView class]])
{
ChildView *concernedCustomerView = (ChildView *)view;
if (concernedCustomerView.typeOfCompartment == CompartmentTypeNone)
{
[concernedCustomerView.checkBoxButton setSelected:NO];
[concernedCustomerView.countSwitch setOn:NO animated:YES];
concernedCustomerView.countTextField.userInteractionEnabled = YES;
concernedCustomerView.countTextField.alpha = 1.0f;
concernedCustomerView.countTextField.text = nil;
}
}
}
自定义子视图中的方法
-(void)textFieldDidChange:(id)sender
{
NSString *note = _countTextField.text;
note = [note stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
//If we are checking note for nil it should be before calling trimming white space
if (note && note.length > 0)
{
[_checkBoxButton setSelected:YES];
if (note.length == 3 && note.integerValue == 999)
{
[_countSwitch setOn:YES animated:YES];
_countTextField.userInteractionEnabled = NO;
_countTextField.alpha = 0.5f;
_countTextField.text = nil;
// [_countSwitch sendActionsForControlEvents:UIControlEventValueChanged];
}
}
else
{
[_checkBoxButton setSelected:NO];
}
if ([self.delegate conformsToProtocol:@protocol(ChildViewDelegate)] &&
[self.delegate respondsToSelector:@selector(adjustStateOfOtherControls:andCheckBoxStatus:)])
{
[self.delegate adjustStateOfOtherControls:_typeOfCompartment andCheckBoxStatus:_checkBoxButton.selected];
}
}
【问题讨论】:
标签: ios iphone uitextfield