Выбор и выделение текста на этикетке

Я хочу выделить, а затем выделить тот же текст на этикетке определенным цветом. Можно ли это сделать с помощью жестов. И я должен сохранить положение выделенной части, даже если приложение завершает работу, поэтому, когда пользователь возвращается, он может видеть эту выделенную часть.

Спасибо


person Rachit    schedule 13.06.2011    source источник


Ответы (2)


Да, вы можете использовать этот жест со своим UILabel для выделения текста, изменив цвет фона или цвет текста вашего UILabel.

Вы также можете сохранить текущее состояние вашего UILabel с помощью NSUserDefaults и прочитать его, когда пользователь запустит ваше приложение.

Объявите isLabelHighlighted как BOOL для состояния UILabel.

UITapGestureRecognizer* myLabelGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(LabelClicked:)];
[myLabelView setUserInteractionEnabled:YES];
[myLabelView addGestureRecognizer:myLabelGesture];


-(void)LabelClicked:(UIGestureRecognizer*) gestureRecognizer
{
    if(isLabelHighlighted)
    { 
         myLabelView.highlightedTextColor = [UIColor greenColor];
    }
    else 
    {
         myLabelView.highlightedTextColor = [UIColor redColor];
    }
}

Чтобы сохранить состояние вашего UILabel.

[[NSUserDefaults standardUserDefaults] setBool:isLabelHighlighted forKey:@"yourKey"];

Чтобы получить к нему доступ, вы должны использовать ниже.

isLabelHighlighted = [[NSUserDefaults standardUserDefaults] boolForKey:@"yourKey"];
person Jhaliya - Praveen Sharma    schedule 13.06.2011
comment
вы получили ответ на это? Поделись, пожалуйста - person Harsh Thakur; 27.04.2015

NSUserDefaults не подходит, так как приложение может неожиданно завершиться UITapGestureRecognizer не поддерживаются никакие состояния, кроме UIGestureRecognizerStateEnded

- (void)viewDidLoad
{
    [super viewDidLoad];

    UILongPressGestureRecognizer *longPressGestureRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressGestureRecognizerAction:)];
    longPressGestureRecognizer.minimumPressDuration = 0.01;
    [label setUserInteractionEnabled:YES];
    [label addGestureRecognizer:longPressGestureRecognizer];
}


- (void)longPressGestureRecognizerAction:(UILongPressGestureRecognizer *)gestureRecognizer
{
    if (gestureRecognizer.state != UIGestureRecognizerStateEnded)
    {
        label.alpha = 0.3;
    }
    else
    {
        label.alpha = 1.0;

        CGPoint point = [gestureRecognizer locationInView:label];
        BOOL containsPoint = CGRectContainsPoint(label.bounds, point);

        if (containsPoint)
        {
            // Action (Touch Up Inside)
        }
    }
}
person Igor Bachek    schedule 05.10.2016