【问题标题】:Creating custom UITextView with UILabels as well as text in it使用 UILabels 以及其中的文本创建自定义 UITextView
【发布时间】:2013-01-31 09:40:46
【问题描述】:

我想创建一个自定义 UITextView 并能够在其中输入文本,以及以编程方式在其中添加一些类似于文本的 UILabels(我需要使用“退格”按钮删除它们)光标靠近它们)。

这个UITextView应该是可展开的,标签可以有不同的宽度。

关于如何创建这类东西的任何想法,任何教程或类似的东西?

【问题讨论】:

  • @SpencerWong 你真的以为我不知道吗?
  • 有点像 iOS 邮件应用程序的“收件人”字段?您输入一封电子邮件,然后它会变为绿色标签,您可以按退格键将其删除。
  • @Fogmeister 没错!这正是我想要实现的目标!
  • 嗯...我还没有看到任何类似的教程,但我相信一定有一些。我去看看。除此之外,我只能考虑从头开始创建它并自己渲染文本。
  • @Fogmeister 谢谢!我会自己调查这件事,希望我们能找到一些线索。

标签: iphone ios objective-c cocoa-touch uitextview


【解决方案1】:

您可以使用此代码创建文本字段。

UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(10, 200, 300, 40)];
textField.borderStyle = UITextBorderStyleRoundedRect;
textField.font = [UIFont systemFontOfSize:15];
textField.placeholder = @"enter text";
textField.autocorrectionType = UITextAutocorrectionTypeNo;
textField.keyboardType = UIKeyboardTypeDefault;
textField.returnKeyType = UIReturnKeyDone;
textField.clearButtonMode = UITextFieldViewModeWhileEditing;
textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;    
textField.delegate = self;
[self.view addSubview:textField];
[textField release];

对于创建标签,您可以使用以下代码:

CGRect labelFrame = CGRectMake( 10, 40, 100, 30 );
    UILabel* label = [[UILabel alloc] initWithFrame: labelFrame];
    [label setText: @"My Label"];
    [label setTextColor: [UIColor orangeColor]];
    label.backgroundColor =[UIColor clearColor];
    [view addSubview: label];

退格磁带使用此方法时删除标签:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
if ([string isEqualToString:@""]) {
NSLog(@"backspace button pressed");
[label removeFromSuperview];
}
return YES;
}

如果按下退格按钮,则 replacementString(string) 将具有空值。所以我们可以使用这个来识别退格按钮的按下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 2011-01-26
    • 2020-10-12
    • 2012-03-21
    • 2019-03-04
    • 2021-04-22
    相关资源
    最近更新 更多