通过文本轻扫手势罢工

时间:2015-03-03 17:40:08

标签: objective-c xcode uilabel uiswipegesturerecognizer swipe-gesture

我一直试图找到一个解决方案,使用右侧的滑动手势,并在带有敲击效果的label.text上制作文本,再次滑动以移除穿透并使原始文本保持原样。有关如何执行此操作的任何代码示例?这是一个XCode问题。

if ([***this is the part i need help with***])
{
    NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:[self.EditItem valueForKey:@"eventName"]];
    [attributeString addAttribute:NSStrikethroughStyleAttributeName
                            value:@1
                            range:NSMakeRange(0, [attributeString length])];
    self.nameTextField.attributedText = attributeString;
    [self.EditItem setValue:[NSString stringWithFormat:@"Completed"] forKey:@"eventName"];
    NSLog(@"Swiped to the right");
}
else
{
    [NSString initWithString:[self.EditItem valueForKey:@"eventName"]];
    NSLog(@"normal text no strike through");
}

1 个答案:

答案 0 :(得分:0)

您可以尝试这样一个简单的手势识别器。

在viewDidLoad或类似的

中添加以下内容
UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(strikeThrough)];
swipe.direction = UISwipeGestureRecognizerDirectionRight;

[self.nameTextField addGestureRecognizer:swipe];

然后设置strikeThrough方法将文字更改为删除线 - 如果您只有一个文本字段,只需添加一个切换按钮,以便您可以打开和关闭删除线。

bool stricken;

- (void) strikeThrough {

    if (stricken) {

        self.nameTextField.text = self.nameTextField.text;

        stricken = false;

    } else {

        NSDictionary* attributes = @{ NSStrikethroughStyleAttributeName: [NSNumber numberWithInt:NSUnderlineStyleSingle] };
        NSAttributedString* attrText = [[NSAttributedString alloc] initWithString:self.nameTextField.text attributes:attributes];
        self.nameTextField.attributedText = attrText;

        stricken = true;

  }

}