UITextView上的清除按钮

时间:2010-10-07 00:55:53

标签: ios objective-c iphone uitextfield uitextview

如何为UITextView添加一个清晰按钮(在圆圈内交叉),如UITextField?

6 个答案:

答案 0 :(得分:11)

根据GhostRider的回答,更准确,最新的实施:

int kClearButtonWidth = 15;
int kClearButtonHeight = kClearButtonWidth;

//add the clear button
self.clearButton = [UIButton buttonWithType:UIButtonTypeCustom];
[self.clearButton setImage:[UIImage imageNamed:@"UITextFieldClearButton.png"] forState:UIControlStateNormal];
[self.clearButton setImage:[UIImage imageNamed:@"UITextFieldClearButtonPressed.png"] forState:UIControlStateHighlighted];

self.clearButton.frame = CGRectMake(0, 0, kClearButtonWidth, kClearButtonHeight);
self.clearButton.center = CGPointMake(self.textView.frame.size.width - kClearButtonWidth , kClearButtonHeight);

[self.clearButton addTarget:self action:@selector(clearTextView:) forControlEvents:UIControlEventTouchUpInside];

[self.textView addSubview:self.clearButton];

方法

- (void)clearTextView:(id)sender{
    self.textView.text = @"";
}

您可以将此图像用于按钮的两种状态:

UITextFieldButton UITextFieldButtonPressed

答案 1 :(得分:9)

只需制作一个uibutton并将其放在uitextview上并将其操作设置为明文视图;

uitextview.frame = (0,0,320,416);

uibutton.frame = (310,0,10,10);
[uibutton setimage:@"cross.png" forcontrolstate:uicontrolstatenoraml];
[uibutton addTarget:self action:@selector(clearButtonSelected:) forControlEvents:UIControlEventTouchUpInside];

-(void)clearButtonSelected{
    uitextview=@"";
}

希望您在单击上方的十字按钮时清除文本视图文本是有帮助的 如果不明白,那么我可以给你发送适当的程序

答案 2 :(得分:7)

从产品角度来看,如果您要使用清除按钮,则可能需要使用UITextField而不是UITextViewUITextField原生支持清除按钮 - 设置clearButtonMode属性:

UITextField *textfield = ...;
textfield.clearButtonMode = UITextFieldViewModeAlways;

见截图:

enter image description here

您可以使用UITextFieldViewModeWhileEditing仅在用户主动更新内容时显示清除按钮。

答案 3 :(得分:1)

没有像UITextField那样内置的内容。您必须自己添加视图(可能是UIButton)并正确放置它,并以某种方式让文本正确地环绕它。 (而且我认为后者确实不可能。)

也许您应该在键盘上方显示一个工具栏(如果您的目标是3.2及更高版本,则显示inputAccessoryView)提供一个清除按钮。

答案 4 :(得分:0)

对我来说,更改.frame或.contentInset属性不起作用。

对我而言,最好的结果来自:

1)向控制器添加一个UIView,给它圆角和边框来模仿UITextView。

self.viewTextBackground.layer.borderColor = [UIColor colorWithRed:171/255.0 green:171/255.0 blue:171/255.0 alpha:1.0].CGColor;
self.viewTextBackground.layer.borderWidth = 1.0f;
self.viewTextBackground.layer.cornerRadius = 9.0f;

2)将UITextView置于此UIView之上。放置它以使底层UIView的边框保持可见。

3)给出UITextView圆角:

self.textNote.layer.cornerRadius = 9.0f;

3)使其宽度为fe。与底层UIView相比减少了30个像素。您现在可以有一个清除按钮的空间。

4)只需将UIButton添加到控制器并将其放在底层UIView的右上角。

5)更改按钮属性:将其类型设置为“自定义”,并将其图像设置为灰色十字图像。

6)将动作绑定到按钮te清除UITextView

答案 5 :(得分:0)

您可以使用最少的编码添加一个清晰的按钮,如所附屏幕快照中的按钮。只需执行以下步骤:

  • 选择情节提要并将一个UIButton拖到您的UITextView中
  • 设置按钮约束
  • 分配标题或背景图片
  • 在ViewController中为“ Touch Up Inside”创建按钮的IBOutlet参考和操作(请参见下面的onClearPressed(_:)
  • 实施textViewDidChange(_:) UITextViewDelegate委托方法,并确保根据文本字段内容设置按钮的isEnabled属性,例如:

func textViewDidChange(_ textView: UITextView) { clearButton.isEnabled = !textView.text.isEmpty }

  • 实施onClearPressed(_:)操作:

@IBAction func onClearPressed(_ sender: Any) { textView.text = "" clearButton.isEnabled = false }

就是这样。

clear button in UTextView