我有一个UITextView,我想禁用它可编辑的'如果UISwitch的状态设置为ON,则属性。
myTextView = [[UITextView alloc]initWithFrame:CGRectMake(20, 180, 200, 30)];
myTextView.backgroundColor = [UIColor whiteColor];
myTextView.text = @"This is a textView";
[self.view addSubview:myTextView];
mySwitch = [[UISwitch alloc]initWithFrame:CGRectMake(230, 125, 200, 30)];
[self.view addSubview:mySwitch];
我知道我可以使用以下方法检查开关的状态:
if ([mySwitch isOn]) {
myTextView.editable = NO;
} else {
myTextView.editable = YES;
}
问题是当我运行我的项目时文本不可编辑,但是当我滑动开关时,文本无法编辑(这在上面的代码中很明显)。我想知道如果我切换开关,我需要做些什么来改变UITextView的可编辑属性。
答案 0 :(得分:1)
您需要添加IBAction并将其连接到切换方法Value Changed
-(IBAction)toggleSwitch:(UISwitch*)sw {
myTextView.editable = sw.on;
NSLog(@"Value Changed");
}
编辑:以编程方式而不是通过Interface Builder
执行的代码myTextView = [[UITextView alloc]initWithFrame:CGRectMake(20, 180, 200, 30)];
myTextView.backgroundColor = [UIColor whiteColor];
myTextView.editable = NO;
myTextView.text = @"This is a textView";
[self.view addSubview:myTextView];
mySwitch = [[UISwitch alloc]initWithFrame:CGRectMake(230, 125, 200, 30)];
mySwitch.on = NO;
[mySwitch addTarget:self action:@selector(toggleSwitch:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:mySwitch];
-(void)toggleSwitch:(UISwitch*)sw {
myTextView.editable = sw.on;
}
答案 1 :(得分:1)
UISwitch
是UIControl
类的子类,除其他外,它提供了一个基于目标动作的模型,用于接收有关控件状态的更新。
这意味着您可以使用-[UIControl addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents]
方法在交换机更改其布尔值时调用您的方法:
[yourSwitch addTarget:self action:@selector(switchToggled:) forControlEvents:UIControlEventValueChanged]
您也可以通过右键单击UISwitch
并将action
分配给相应的IBAction
方法,从Interface Builder执行此操作:
- (IBAction) switchToggled:(UISwitch*)switchControl {
yourTextView.editable = switchControl.on;
}
答案 2 :(得分:0)
您必须为交换机创建一个操作,当交换机的状态发生变化时,该操作将触发。如果您使用的是故事板,请从开关右键拖动到代码(如创建插座)并选择action
。在该功能中,您可以检查您的开关现在是打开还是关闭,并根据您的TextView是否可编辑
答案 3 :(得分:0)
uat=> \dn
List of schemas
Name | Owner
-----------------+----------
audit | postgres