如何禁用基于UISwitch编辑UITextView?

时间:2016-01-21 11:36:31

标签: ios objective-c iphone uitextview uiswitch

我有一个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的可编辑属性。

4 个答案:

答案 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)

UISwitchUIControl类的子类,除其他外,它提供了一个基于目标动作的模型,用于接收有关控件状态的更新。

这意味着您可以使用-[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