如何为UITextView添加一个清晰按钮(在圆圈内交叉),如UITextField?
答案 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 = @"";
}
您可以将此图像用于按钮的两种状态:
答案 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
而不是UITextView
而UITextField
原生支持清除按钮 - 设置clearButtonMode
属性:
UITextField *textfield = ...;
textfield.clearButtonMode = UITextFieldViewModeAlways;
见截图:
您可以使用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)
您可以使用最少的编码添加一个清晰的按钮,如所附屏幕快照中的按钮。只需执行以下步骤:
onClearPressed(_:)
)textViewDidChange(_:) UITextViewDelegate
委托方法,并确保根据文本字段内容设置按钮的isEnabled属性,例如: func textViewDidChange(_ textView: UITextView) {
clearButton.isEnabled = !textView.text.isEmpty
}
onClearPressed(_:)
操作: @IBAction func onClearPressed(_ sender: Any) {
textView.text = ""
clearButton.isEnabled = false
}
就是这样。