Tag: uitextview

在iOS中的UITableViewCell中自动扩展文本输入

在iOS中动态扩展视图从未如此简单。 正如我们在iOS的早期版本中所看到的,如果我们需要一个UILabel来根据其内容高度来计算高度,我们可以这样做,但是需要基于内容文本,字体,UILabel宽度等进行一些手动高度计算。它通过调用sizeToFit方法来增长。 对于文本输入,这从来都不是一件容易的事。 如果我们使用UITextField ,我们知道它最多只能输入一行。 对于多行输入,我们使用UITextView并使它可编辑。 但是问题是,我们必须设置它的高度或边界约束。 如果输入内容的高度超过了UITextView的高度,则它不会扩展,而是在该高度内内容可以滚动。 UITableViewCell的动态高度计算更加复杂。 但是在具有自动布局功能的iOS 8之后,生活变得更加轻松,因为苹果终于对它进行了外观设计。 好吧,这里的要求有些不同。 我们需要一个文本输入视图,该视图会随着内容高度的变化而自动增长/缩小。 这是操作方法。 首先,让我们创建一个Xcode项目并添加UITableViewCell的新子类。 说,我们的子类名称是QACell。 因此,让我们打开QACell.xib并根据您的要求添加TextView或UITextView的任何子类。 让我们在UITextView的顶部,底部,左侧,右侧添加边界约束,以便当UITableViewCell的高度发生变化时,其高度可以增加/缩小。 因此,添加约束后,它应该看起来像这样。 现在,打开UITextView的“属性”检查器,并禁用“滚动和弹跳”。 我们必须禁用滚动,因为启用滚动时,UITextView的框架与其内容大小无关。 但是当被禁用时,它们之间是有关系的。 我建议禁用跳动,因为我们需要在UITextView发生的每次更改时都更新UITableViewCell,当启用跳动并且TextView高度发生更改时,我们会有意外的跳动,这是我们所不希望的。 现在,让我们打开QACell.swift并为我们正在使用的UITextView添加一个IBOutLet。 然后是棘手的部分。 我们需要观察UITextView中内容的变化,这意味着当我们在UITextView实例中键入用户时,我们需要知道。 我们知道该怎么做,对吗? 我们需要实现UITextViewDelegate协议,并重写textViewDidChange(textView:UITextView)方法。 在这一阶段,我们知道用户何时通过委托在其中键入内容。 正如我们可以看到的变化一样,当发生变化时,我们必须通知UITableView更新当前UITableViewCell实例的高度。 但这不只是像往常一样重新加载单元格,因为如果我们重新加载单元格,则在键入每个字符之后,单元格将被重新加载,并且焦点将从当前UITextView实例中丢失。 因此,我们将无法正确键入。 而且,如此多次更新Cell绝对是一项昂贵的操作。 因此,让我们解决问题。 因为我们需要将输入更改的信息传递给我们的UITableView,所以我们将通过委托进行操作。 因此,让我们在其中编写一个协议和一个委托方法。 协议ExpandingCellDelegate { func updateCellHeight(indexPath:NSIndexPath,comment:String) } 现在,当UITextView实例的内容更改时,我们将调用委托方法。 因此,实现此协议的类(我们的ViewController)获得了更新特定UITableViewCell实例所需的消息。 在我们的代码中看起来像这样。 func textViewDidChange(textView:UITextView){ self.delegate.updateCellHeight(self.cellIndexPath,注释:textView.text) } 在这个阶段,我们已经完成了构建基础。 现在我们必须把这个事情付诸行动。 让我们打开具有UITableView的ViewController并实现UITableViewDataSource,UITableViewDelegate协议。 而且,实现我们之前创建的ExpandingCellDelegate 。 在cellForRowAtIndexPath中为QACell设置必要的数据源和属性,并像下面的代码一样设置委托。 cell.answerTextView.scrollEnabled […]

将UITextView嵌入UITableViewCell中

在Workable,我们有一个称为评估的功能。 部分原因是可以填写面试套件,如下所示。 当我们开始研究如何实现此功能时,出现的一个想法是使用堆栈视图,但是用户创建了采访工具包,因此它们的大小可能会有所不同。 因此,我们选择使用UITableView作为此屏幕的主干。 毕竟它只是UITableViewCell中的UITextView,对吗? 在本文中,我将尝试列出我们面临的所有问题以及如何解决这些问题。 在演练结束时,将附上完整的解决方案。 在单元格内添加UITextView 我们创建了一个原型单元,并添加了UITextView,如下所示。 另外,不要忘记在UITextView的属性检查器中关闭 Scrolling Enabled属性。 这使UITextView具有取决于文本的固有内容大小,或者接近于我们稍后发现的文本大小。 现在,我们希望能够编辑文本。 简单,只需启用UITextView的`Editable`属性即可。 但是我们有一个小问题,我们希望UITableViewCell跟随UITextView的高度。 我们可以从单元格创建一个回调,以通知我们任何文本更改,如下所示: 在TextTableViewCell.swift中 @IBOutlet弱var textView:UITextView! var textChanged:(((String)-> Void)? 覆盖func awakeFromNib(){ super.awakeFromNib() textView.delegate =自我 } func textChanged(action:@escaping(String)-> Void){ self.textChanged =操作 } func textViewDidChange(_ textView:UITextView){ textChanged?(textView.text) } 在TableTableViewController.swift-> cellForRow中 cell.textChanged {[weak tableView](newText:String)在 } 注意:不要忘了在此闭包的捕获列表中使tableView变弱,因为您将得到一个保留周期。 tableView->单元格(UI),单元格-> tableView(关闭) 我们唯一要做的就是重新加载单元。 我们有多种方法可以做到这一点,因此我们将尝试最常见的一种方法tableView.reloadData()。 cell.textChanged {[weak tableView](_)in //可能的解决方案:1 […]

斯威夫特UIKit’iKeşfedelim

斯威夫特yakınzamanda 5yaşınagirecek。 5个iOS版本您可以使用Swift Dilinde,yazılıyor和Obj-C dilinden esergörmüyoruz。 你是不是喜欢我的节目? İsimlerine? Buyazıdasizlere Swift’te yer alan UIKit’itanıtmayaçalışacağım。 UI kelimesininaçılımı“用户界面”目录。 Yanikişiningördüğüekran diyebiliriz。 Biruygulamayıaçtığınızda塔布拉尔语,butonlar ve metinlergöreceksiniz。 Bunlarınhepsi UIKitadıaltındabulunan objelerdir。 Gördüğünüzüzerebir Ekranüzerindebirkaç元素mevcut。 UILabel ,它的名称为objedir。 Genelliklekısametinlerin,说“ılarınekranayazdırılmasındakullanılanbir obje olmakla birlikteüzerindedeğişiklikleryapmak epeykolaydır”。 Bununla birliktebüyük植骨iText UITextViewkullanmaktayız ,从yarayan pekçoközellikbulunmaktadır。 重要信息“可滚动”的gibiyukarıkaydırarakkalanıokuyabildiğimiz。 像是从Bize birşeyyazmasınıbekliyor isek o zamanUITextField’ıkullanıyoruz。 Küçükgörünebilirancakburayıözelleştirerek她的seyeikullanıcıdanalmanızmümkün。 İsterbir kelime olsun,isterseniz bir paragraf,isterseniz bir toplamaişlemi。 她的türlümetni seve sevealıyor。 İşinizbittiğinde她的zaman […]

如何在UITableViewCell中自动调整Textview的大小

在开发iOS应用中经常遇到Tableview放文本视图,之前都是自己算算单元高度,首先介绍如何利用autoresize来自动调整cell高度。 建立TextViewCell继承UITableViewCell 加上TextView:在xib拉TextView到单元格上 加上TableView委托的程序码 如果没有autoresize会像这样 全部都挤在一起… 运行! 你会发现在编辑TextView的时候,Cell并不会自动缩放。 所以要在TextView发生改变的时候,更新TableView 在TextViewCell加上下面的程式码

使用AutoLayout垂直调整UITextView文本的大小

我希望使用这里给出的答案来解决我的问题,但UITextView没有intrinsicContentSize方法。 有谁知道我可能会这样做? 在Android上,我只需要在布局文件中使用“wrap-content”。 但在iOS这里是付出代价的。 至于在键入UITextField(通过使用Autolayout)时调整UITextField的build议,我不确定为什么这些人在代理方法的签名中使用IBAction 。 无论如何,他们不为我工作。 UPDATE 我以为我解决了以下问题。 但“成长”是短暂的。 我在打字的时候,这个字段只会增长。 一旦我停止input,它将恢复到较小的尺寸。 我怎样才能使它更加永久? – (BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { [self resizeTextViewToFitContent:textView]; } – (void)resizeTextViewToFitContent:(UITextView *)textView { CGRect frame = textView.frame; frame.size.height=[self heightOfTextView:textView]+5; textView.frame=frame; } -(CGFloat)heightOfTextView:(UITextView *)textView { CGRect reviewTextFrame = [textView.attributedText boundingRectWithSize:CGSizeMake(textView.bounds.size.width, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin context:nil]; return CGRectGetHeight(reviewTextFrame); }

在UITextView中防止小写

我试图阻止用户input任何小写字符到UITextView中。 我已经创build了可接受字符的#define字符集 #define VALID_CHARACTERS @"ABCDEFGHIJKLMNOPQRSTUVWYXZ1234567890" 现在我想知道如何使用这个在UITextView委托中返回no时,当用户试图input一个字符,不符合我的VALID_CHARACTERS 任何帮助,将不胜感激。

UITextView InputView UITableViewController

我试图实现一个重写UITextViews InputView的TableView,为用户提供一个可search的TableView,然后用选定的值填充UITextField。 我已经search了一个公平的位,我find的最接近的解决scheme是这个,但我不知道如何将UITableViewController与我的UITextViews InputView关联? 我可以看到这些函数在MultiSelectPicker中被调用… override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int override func numberOfSectionsInTableView(tableView: UITableView) -> Int 但是,这些不是我相当确定的解释为什么我没有看到填充在表视图中的任何东西。 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? 我已经改变了didSet,所以我知道reloadData被从主线程调用,仍然没有。 var items = [NSObject](){ didSet{ dispatch_async(dispatch_get_main_queue(),{ self.tableView.reloadData() }); } } 它可能是我在我的主viewcontroller中设置inputView的方式,但我相当新的iOS和Swift,所以我可能缺less一些基本的东西。 @IBOutlet weak var mspEmployee: […]

iPhone的iOS如何改变UITextView中的一些单词的颜色?

我想为我的应用程序的用户提供在UITextView中突出显示或更改所选单词的颜色的function 。 我知道如何改变整个文字颜色: textView.textColor = [UIColor redColor]; 这不是我要找的。 我需要知道如何更改 UITextView 中任意字符序列的颜色 。 在文本视图中我还没有看到这样的function,所以我认为它不是开箱即用的。 是否有任何开源项目或示例如何更改UITextView中的颜色或突出显示的文本块? 谢谢!

在iOS中删除HTMLurl标记

我正在编写一个iOS应用程序,从一个不受我控制的服务器上下载一些数据。 我没有使用自定义数据检测器。 返回的JSON中的string仍然包含它们的HTML url标记,我想删除它们,因为我想在UITextView中显示这些string,并且这些string <strong><a href="http://instagram.com/emotionslive" rel="nofollow">Instagram</a></strong> / <strong><a href="http://www.behance.net/creativemints" rel="nofollow">Behance</a></strong> <a href="http://readdle.com/" rel="nofollow"><strong>Live Now</strong></a> 我真正想要的是这样的: Instagram Behance 现在直播 什么是最好的方式去做这件事? 我应该使用正则expression式从文本中去除url标签吗? 当我这样做的时候,我会丢失链接“描述”(在上面的例子中,“Instagram”和“Behance”)吗? 使用UIWebView会更容易吗? 如果这太难/不可能,那么没有他们的描述就只有网站才行。 谢谢!

secureTextEntry不会隐藏我的UITextView的文本

我试图隐藏UITextView的文本,用作密码input,使用点而不是实际的文本。 这个文本视图被称为TV_Password。 当它为空时,文本不应该被隐藏,应该用string“Password”replace 我在网上发现解决方法是将以下属性更改为true。 self.TV_Password.secureTextEntry = true 不幸的是,这仍然不能隐藏我的文字。 我将这些修改移到了textViewShouldBeginEditing,而不是textViewDidBeginEditing,build议给有此类问题的人,但是仍然不起作用。 我有各种断点告诉我的指示是真的完成,但没有任何反应。 任何想法 。? //MARK: TextViews editing func textViewShouldBeginEditing(textView: UITextView) -> Bool { if (textView == self.TV_Password){ if (self.TV_Password.text == "Password"){ //empty text self.TV_Password.text = "" //enable secured text self.TV_Password.secureTextEntry = true } } return true } func textViewDidEndEditing(textView: UITextView) { if (textView == self.TV_Password) { //if […]