选择并突出显示标签上的文本

时间:2011-06-13 15:45:41

标签: iphone objective-c text highlighting gestures

我想选择然后用特定颜色突出显示标签上的相同文字。这可以通过手势帮助实现。 而且我必须存储突出显示部分的位置,即使应用程序终止,所以当用户回来时,他们可以看到该部分突出显示

由于

2 个答案:

答案 0 :(得分:6)

是的,您可以使用UILabel的手势通过更改UILabel的背景颜色或文字颜色来突出显示文字。

您还可以使用UILabel存储NSUserDefaults当前状态,并在用户启动您的应用时将其读回来。

isLabelHighlighted州声明UILabel BOOL

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"];

答案 1 :(得分:1)

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)
        }
    }
}