yytextview 复制_用YYTextView 实现填空题作答功能

这篇博客介绍了如何利用YYTextView和YYTextEditBindingParser在iOS应用中实现填空题的作答功能。通过创建和解析富文本,控制光标位置,确保用户只能在预设的填空处进行编辑。此外,还提供了防止删除binding字符串的代理方法。
摘要由CSDN通过智能技术生成

整理了一份Demo,因为每个项目具体的需求不一样,我只把基本的功能整理出来了

Demo放在GitHub上

项目中要实现填空题的作答功能,比如诗词填空:床前明月光,___________。举头望明月,________。要求只能编辑横线部分。

首先想到的是强大的YYKit,先在网上找了找,发现有一种方案是用label 加textfield的这种富文本编辑的方式实现的,虽然大体符合需求,但是排版会比较难看。

最后决定用YYTextView去实现,原理就是根据正则匹配题干和下划线,整个题目会被填空部分分割成几块,把各个分块binding,然后控制光标位置,只让光标落在下划线上。

创建题目:

NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithString:@"#(填空题)枯藤老树昏鸦,# #,古道西风瘦马。# #,断肠人在天涯。# "];

text.yy_font = [UIFont systemFontOfSize:17];

text.yy_lineSpacing = 5;

text.yy_color = [UIColor blackColor];

YYTextView *textView = [YYTextView new];

textView.textParser = [YYTextEditBindingParser new];

textView.attributedText = text;

textView.frame = CGRectMake(5, 100, CGRectGetWidth(self.view.frame)-10, 200);

textView.textContainerInset = UIEdgeInsetsMake(10, 10, 10, 10);

textView.delegate = self;

if (kiOS7Later) {

textView.keyboardDismissMode = UIScrollViewKeyboardDismissModeInteractive;

}

textView.scrollIndicatorInsets = textView.contentInset;

[self.view addSubview:textView];

self.textView = textView;

在代理方法里面控制光标位置

#pragma mark YYTextViewDelegate

- (BOOL)textViewShouldBeginEditing:(YYTextView *)textView{

if (textView.selectedRange.location==0 || textView.selectedRange.location >= textView.text.length) {

return NO;

}else{

return [self controllCursorRangeForTextView:textView];

}</

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值