自定义setText方法仅可在UILabel

时间:2019-05-02 11:57:04

标签: objective-c uilabel

我正在研究一个包含对UILabel进行更改的项目。

这是想法:

UILabel是用户输入的标准文本,并在其下方输入了UITextField

长按UILabel时,将显示该特定UILabel的描述并隐藏UITextField。再次长按时,它将再次显示标准文本并显示UITextField

第一部分起作用:长按时,将显示说明而不是标准文本,并且UITextField被隐藏。 NSLog也是正确的。

但是,当我再次长按时:说明文字会保留,但是UITextField将再次出现(因为我在代码中这样说)。

NSLog告诉我DID更改(我正在记录UILabel.text)。

这是代码:

-(void)textfieldLongPressed:(UILongPressGestureRecognizer *)gesture {

    if(gesture.state == UIGestureRecognizerStateEnded) {

        // getting the correct switch (UILabel)
        TextFieldSwitch *correctSwitch = (TextFieldSwitch *)[gesture view];

        // getting the switch text using a own generated method that returns the correct UILabel.text
        NSString *switchText = [correctSwitch getTextfieldSwitchText];

        // if the switch text is equal to the description, it should show the standard text again & show the UITextField
        if([switchText  isEqual: [correctSwitch getDescription]]) {
            [correctSwitch setTextfieldSwitchText:[correctSwitch getName]];
            [correctSwitch showTextField];
        } else {
            [correctSwitch setTextfieldSwitchText:[correctSwitch getDescription]];
            [correctSwitch hideTextField];
        }

        // log the standard name of the switch.
        NSLog(@"Name: %@", [correctSwitch getName]);

        //log the UILabel.text
        NSLog(@"TxtfieldLabel text: %@", [correctSwitch getTextfieldSwitchText]);
    }
}

如果有人可以帮助我,我将不胜感激!

先谢谢您

编辑:

TextFieldSwitch类的代码:

-(void)setTextfieldSwitchText:(NSString *)newText {
    textfieldSwitch.text = newText;
}

0 个答案:

没有答案