diz*_*izy 39 iphone objective-c uitextview ios
我很难UITextView禁止选择文本.
我试过了:
canCancelContentTouches = YES;
Run Code Online (Sandbox Code Playgroud)
我尝试过子类化和覆盖:
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
Run Code Online (Sandbox Code Playgroud)
(但只有在选择后才会调用)
- (BOOL)touchesShouldCancelInContentView:(UIView *)view;
Run Code Online (Sandbox Code Playgroud)
(我没有看到被解雇)
- (BOOL)touchesShouldBegin:(NSSet *)touches
withEvent:(UIEvent *)event
inContentView:(UIView *)view;
Run Code Online (Sandbox Code Playgroud)
(我也没有看到被解雇)
我错过了什么?
Daf*_*ams 76
问题如何在UITextView中禁用"复制","剪切","选择","全选",以及我刚刚实施和验证的可行解决方案:
子类UITextView和覆盖canBecomeFirstResponder:
- (BOOL)canBecomeFirstResponder {
return NO;
}
Run Code Online (Sandbox Code Playgroud)
请注意,这会禁用链接和其他可插入文本内容.
小智 46
我发现了这个电话
[textView setUserInteractionEnabled:NO];
Run Code Online (Sandbox Code Playgroud)
效果很好.
aar*_*rse 10
斯威夫特 4,Xcode 10:
如果您想让它使用户无法选择或编辑文本。
这使它无法编辑:
textView.isEditable = false
Run Code Online (Sandbox Code Playgroud)
这将禁用所有用户交互:
textView.isUserInteractionEnabled = false
Run Code Online (Sandbox Code Playgroud)
这使得您无法选择它。这意味着它不会显示编辑或粘贴选项。我想这就是你要找的。
textView.isSelectable = false
Run Code Online (Sandbox Code Playgroud)
听起来你真正想要的是UIScrollView中的巨型UILabel,而不是UITextView.
更新:如果您使用的是较新版本的iOS,UILabel现在有一个line属性:
斯威夫特 4 , Xcode 10
该解决方案将
确保将委托设置为 YourViewController
yourTextView.delegate = yourViewControllerInstance
Run Code Online (Sandbox Code Playgroud)
然后
extension YourViewController: UITextViewDelegate {
func textViewDidChangeSelection(_ textView: UITextView) {
view.endEditing(true)
}
}
Run Code Online (Sandbox Code Playgroud)
如果您只是想阻止它被编辑,那么将UITextView的"可编辑"属性设置为NO/False.
如果你试图让它可编辑但不可选择,那将会很棘手.您可能需要创建一个用户可以键入的隐藏文本视图,然后让UITextView观察隐藏的textview并使用textview的文本填充自己.
| 归档时间: |
|
| 查看次数: |
42908 次 |
| 最近记录: |