我一直在尝试UITextField和如何使用它的光标位置.我已经找到了许多关系Objective-C答案,如
但由于我正在使用Swift,我想学习如何获取当前光标位置并在Swift中设置它.
下面的答案是我从Objective-C进行实验和翻译的结果.
我的iPhone应用程序中有一个UITextField.我知道如何使文本字段选择其所有文本,但如何更改选择?假设我想选择最后5个字符,或者特定范围的字符,那可能吗?如果没有,我可以移动标记选择开始和结束的线条,就好像用户正在拖动它们一样吗?
我的问题是以编程方式设置UITextView的selectedRange 选择文本,但不能直观地指示它被选中.这听起来像OS 3.0/3.1中的错误.更重要的是,任何解决方案或建议选择显示?(消息底部链接的示例项目)
我怎么知道它被选中,因为我没有得到视觉反馈?两个原因:
我在viewcontroller中有一个UITextView,它允许编辑用户可更改的值.当在表格行上接收到双击时,或者用户点击一行上的详细信息公开按钮时,将打开编辑器控制器.viewcontroller通过presentModalViewController到达,并在编辑器的VC的viewWillAppear方法中启动键盘[self.textView becomeFirstResponder];
有时我想启动编辑器,选择textview的全部内容,这样用户就可以简单地开始输入,它会删除现有的内容(这是因为我创建了带有默认标题的新项目,因此几乎可以肯定用户将首先删除编辑器文本字段的全部内容,然后键入其标题).
我已经尝试过的一些事情:
[[_textView webView] selectAll];(私人api).相同的行为,文本被选中,没有视觉反馈. // UITextFieldDelegate Methods...
- (void)textViewDidBeginEditing:(UITextView *)_textView
{
NSInteger len = [_textView.text length];
if( self.selectInitialText ){
//NOTE: this is not working as expected. Indeed the text is
// selected but the highlighting of the text isn't showing.
_textView.selectedRange = NSMakeRange(0,len);
}
}
Run Code Online (Sandbox Code Playgroud)
- 编辑 -
这是提交给Apple BugReporter的示例项目.下载BugReport_7380723示例项目
附加信息:
在创建和播放示例项目提交时,我发现了两件事:
当选择了文本但没有显示突出显示时,点击一些按键然后"摇动撤消"并恢复原始文本 …
我需要在UIAlertController出现后立即选择文本字段的文本.但是,我在标准UITextField中选择文本的方式在此处不起作用.
这就是我尝试过的,但我似乎无法让它发挥作用.
let ac = UIAlertController(title: "Rename", message: nil, preferredStyle: .Alert)
ac.addTextFieldWithConfigurationHandler({
[] (textField: UITextField) in
textField.selectedTextRange = textField.textRangeFromPosition(textField.beginningOfDocument, toPosition: textField.endOfDocument)
textField.text = "filename.dat"
})
ac.addAction(UIAlertAction(title: "CANCEL", style: .Cancel, handler: nil))
ac.addAction(UIAlertAction(title: "OK", style: .Default, handler: {
[] Void in
// do something
}))
dispatch_async(dispatch_get_main_queue(), {
self.presentViewController(ac, animated: true, completion: nil)
})
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
有没有办法选择UISearchBar中的所有文本?我尝试了[searchBar selectALL:],但它抛出了信号(无法识别的选择器).
我想允许用户更改以前的搜索文本.在某个时候,当用户刚刚开始输入新请求时,旧的请求应该被解雇.如何实现它的标准方法 - 在文本开始编辑时选择所有文本.
ios ×3
iphone ×2
swift ×2
uitextfield ×2
uitextview ×2
cocoa-touch ×1
objective-c ×1
selectall ×1
uisearchbar ×1