ios UITextView 上的清除按钮
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/3877980/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Clear button on UITextView
提问by Abhinav
How can I add a clear button (cross inside a circle) for UITextView like UITextField has?
我怎样才能为的UITextView添加一个清除按钮(圆圈内交叉)喜欢的UITextField了?
采纳答案by GhostRider
just make a uibutton and put it on uitextview and set its action for clear text view;
只需制作一个 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=@"";
}
hope you want to clear the text view text when you click on cross button above is help if not understand then i can send you proper program for that
希望您想在单击上面的十字按钮时清除文本视图文本是有帮助的,如果不明白,那么我可以向您发送适当的程序
回答by PakitoV
Based on the answer from GhostRider a more accurate and up to date implementation:
基于 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];
And the method
和方法
- (void)clearTextView:(id)sender{
self.textView.text = @"";
}
You can use this images for the two states of the button:
您可以将此图像用于按钮的两种状态:
回答by Zorayr
From product perspective, if you're going to have a clear button, you probably want to use a UITextField
instead of a UITextView
and UITextField
supports a clear button natively - set the clearButtonMode
property as such:
从产品的角度来看,如果您想要一个清除按钮,您可能希望使用 aUITextField
而不是 aUITextView
并且UITextField
本机支持清除按钮 - 将clearButtonMode
属性设置为:
UITextField *textfield = ...;
textfield.clearButtonMode = UITextFieldViewModeAlways;
See screenshot:
看截图:
You could use UITextFieldViewModeWhileEditing
to only present the clear button while the user is actively updating the content.
您可以使用UITextFieldViewModeWhileEditing
仅在用户主动更新内容时显示清除按钮。
回答by Kris Markel
There's nothing built in like there is for the UITextField. You'd have to add the view yourself (probably a UIButton) and place it correctly and also somehow get the text to wrap around it correctly. (And I don't think the latter is really possible.)
没有像 UITextField 那样内置任何东西。您必须自己添加视图(可能是 UIButton)并正确放置它,还要以某种方式让文本正确环绕它。(而且我认为后者不太可能。)
Maybe instead you should display a toolbar above the keyboard (or an inputAccessoryView
if you're targeting 3.2 and later) that provides a clear button.
也许您应该在键盘上方显示一个工具栏(或者inputAccessoryView
如果您的目标是 3.2 及更高版本),它提供了一个清晰的按钮。
回答by Brabbeldas
For me changing the .frame or the .contentInset properties did not work.
对我来说,更改 .frame 或 .contentInset 属性不起作用。
For me the best result came from:
对我来说,最好的结果来自:
1) adding a UIView to the controller, give it round corners and a border to mimic a UITextView.
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) place UITextView on top of this UIView. Place it so that the borders of the underlying UIView stay visible.
2) 将 UITextView 放在这个 UIView 之上。放置它以便底层 UIView 的边框保持可见。
3) give the UITextView round corners:
3)给 UITextView 圆角:
self.textNote.layer.cornerRadius = 9.0f;
3) Make its width fe. 30pixels less compared to the underlying UIView. You now have space for a clear-button.
3)使其宽度为fe。与底层 UIView 相比少 30 像素。您现在有一个清除按钮的空间。
4) simply add a UIButton to your controller and place it in the top-right corner of the underlying UIView.
4) 只需将一个 UIButton 添加到您的控制器并将其放置在底层 UIView 的右上角。
5) change the buttons properties: set its type to 'custom' and set its image to the image of a grey cross.
5) 更改按钮属性:将其类型设置为“自定义”并将其图像设置为灰色十字的图像。
6) bind an action to the button te clear the UITextView
6) 绑定一个动作到按钮 te 清除 UITextView
回答by Karoly Nyisztor
You can add a clear button like the one in the attached screenshot with minimal coding. Just follow these steps:
您可以使用最少的编码添加一个像所附屏幕截图中的清除按钮。只需按照以下步骤操作:
- Select the storyboard and drag a UIButton into your UITextView
- Set the buttons constraints
- Assign a title or a background image
- Create the button's IBOutlet reference and the action (see
onClearPressed(_:)
below) for "Touch Up Inside" in the ViewController - Implement the
textViewDidChange(_:) UITextViewDelegate
delegate method, and make sure to set the button's isEnabled property based on the textfield content, e.g.:
- 选择情节提要并将 UIButton 拖到您的 UITextView 中
- 设置按钮约束
- 分配标题或背景图像
onClearPressed(_:)
在 ViewController 中为“Touch Up Inside”创建按钮的 IBOutlet 引用和操作(见下文)- 实现
textViewDidChange(_:) UITextViewDelegate
委托方法,并确保根据文本字段内容设置按钮的 isEnabled 属性,例如:
func textViewDidChange(_ textView: UITextView) {
clearButton.isEnabled = !textView.text.isEmpty
}
func textViewDidChange(_ textView: UITextView) {
clearButton.isEnabled = !textView.text.isEmpty
}
- Implement the
onClearPressed(_:)
action:
- 实施
onClearPressed(_:)
行动:
@IBAction func onClearPressed(_ sender: Any) {
textView.text = ""
clearButton.isEnabled = false
}
@IBAction func onClearPressed(_ sender: Any) {
textView.text = ""
clearButton.isEnabled = false
}
That's it.
就是这样。