- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试使用 xib 文件来显示自定义更改 View 。为此,我使用 here 中的 SimpleAlert。我有 .xib 文件,其中包含我的文本字段,作为 .xib 的所有者,我设置了 ViewController。
import UIKit
class TestBaumViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var tfFirst: UITextField!
@IBOutlet weak var tfSecond: UITextField!
@IBOutlet weak var tfThird: UITextField!
@IBOutlet weak var tfFourth: UITextField!
init() {
super.init(nibName: "TestBaumViewController", bundle: nil)
initializeTextFields()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
//initializeTextFields()
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
//initializeTextFields()
}
override func awakeFromNib() {
super.awakeFromNib()
//initializeTextFields()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func initializeTextFields() {
tfFirst.delegate = self // Error Here!
tfFirst.keyboardType = UIKeyboardType.ASCIICapable
tfSecond.delegate = self
tfSecond.keyboardType = UIKeyboardType.NumberPad
tfThird.delegate = self
tfThird.keyboardType = UIKeyboardType.ASCIICapable
tfFourth.delegate = self
tfFourth.keyboardType = UIKeyboardType.NumberPad
}
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
var result = true
let prospectiveText = (textField.text as NSString).stringByReplacingCharactersInRange(range , withString: string)
if textField == tfFirst {
if count(string) > 0 {
let disallowedCharacterSet = NSCharacterSet(charactersInString: "BW").invertedSet
let replacementStringIsLegal = string.rangeOfCharacterFromSet(disallowedCharacterSet) == nil
let resultingStringLengthIsLegal = count(prospectiveText) <= 1
result = replacementStringIsLegal && resultingStringLengthIsLegal
}
}
if textField == tfSecond {
if count(string) > 0 {
let disallowedCharacterSet = NSCharacterSet(charactersInString: "0123456789").invertedSet
let replacementStringIsLegal = string.rangeOfCharacterFromSet(disallowedCharacterSet) == nil
let resultingStringLenthIsLegel = count(prospectiveText) <= 3
result = replacementStringIsLegal && resultingStringLenthIsLegel
}
}
if textField == tfThird {
if count(string) > 0 {
let disallowedCharacterSet = NSCharacterSet(charactersInString: "abcdefghijklmnopqrstuvwxyz").invertedSet
let replacementStringIsLegal = string.rangeOfCharacterFromSet(disallowedCharacterSet) == nil
let resultingStringLenthIsLegel = count(prospectiveText) <= 1
result = replacementStringIsLegal && resultingStringLenthIsLegel
}
}
if textField == tfFourth {
if count(string) > 0 {
let disallowedCharacterSet = NSCharacterSet(charactersInString: "0123456789").invertedSet
let replacementStringIsLegal = string.rangeOfCharacterFromSet(disallowedCharacterSet) == nil
let resultingStringLenthIsLegel = count(prospectiveText) <= 3
result = replacementStringIsLegal && resultingStringLenthIsLegel
}
}
return result
}
如您所见,我为我的文本字段添加了 IBOutlets,现在我想将此 View Controller 添加为它们的委托(delegate)。这样我就可以检查文本字段中输入的内容。
我尝试了不同的方法。首先,我尝试将 textfield.delegate = self
放入 viewDidLoad 方法中,但出现错误“ fatal error :在展开可选值时意外发现 nil”,我认为这是因为文本字段不是创建喷气机。接下来它尝试了 viewDidAppear 方法,结果相同。最后,在我将一个对象添加到 .xib 并将 View Controller 类设置为其类以触发 awakeFromNib 方法之后,我将 textfield.delegate = self
放入该方法中。但我在这里遇到同样的错误。
是否有我没有想到的事情,或者我正在做的事情不会奏效?
问候阿达卡斯
最佳答案
因为您已经声明您的 Controller 符合 UITextFieldDelegate
协议(protocol),所以在 Interface Builder 中执行此操作:
Outlets
部分,其下有 delegate
。delegate
右侧的圆圈拖到您的 View Controller 对象中,如下所示
现在应该正确调用 textField 委托(delegate)方法。
关于ios - 在 .xib 所有者的 ViewController 中为 textField 设置委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31318880/
我正在开发转换器应用程序。在 iOS 中,我们没有下拉菜单之类的东西。对于一两次转换,这不是问题。但是对于相同类型的多次转换(比如时间:年到月、日、小时、分钟和秒),我们也有相反的转换。它使 UIVi
目前我的 SwiftUI 的光标/插入符号 TextField是蓝色的。是否有用于光标颜色或解决方法的 API? 最佳答案 试了一下, .accentColor 诀窍。 TextField(" Ent
我需要有关此功能的帮助。当我在文本字段中输入文本时,我需要您在我输入另一个文本字段时验证该文本。 这是我的代码 class _ProfileState extends State {
所以在 swift 3 中,我只想遍历 textField outlet 集合,如果 textField.text = "",则对其进行处理。我已经完成了以下操作,但我相信应该有一个更优雅的解决方案,
我正在尝试: 使 TextField 的 trailingIcon 仅在用户输入空格以外的文本时才可见。 稍后当用户单击 trailingIcon 时,TextField 中的文本应该被清除并且 tr
我目前正在尝试实现一个 TextField,它应该根据文本字段的状态(未聚焦、聚焦、错误)更改背景颜色。 我试图通过使用仅管理是否选择了 TextField 的列表来实现此目的。我使用 Gesture
我目前正在我的应用程序中构建一些基本的表单功能,并且在点击另一个 TextField 或在编辑模式下按“完成”时,我遇到了 TextFields 没有更改相关绑定(bind)变量中的值的问题。
我想要一个如下所示的文本字段: 文本字段。文本域 。文本域。文本字段 并在文本字段中仅输入数字。你能帮我吗? :) 最佳答案 您不需要父文本字段来充当 4 个文本字段的容器。将 4 个文本字段放置在面
你好,占位符文本和用户输入的文本从我的文本字段中间开始。我将文本字段设置为屏幕高度的 30%,所以我不能简单地缩小文本字段。如何让文本从左上角开始? 最佳答案 你想要做的是水平和垂直对齐,如下所示:
我遇到了一些奇怪的问题,如果您点击其中一个 TextField,它总是会被清除。 class MyEditText extends StatefulWidget { static String t
我在实现 TextField 时遇到了一些困难。更具体地说,我尝试使用 Controller 清除按钮的 onPress 方法上的 TextField。 controller.clear() 从 Te
有没有一种方法可以让当用户在一个文本字段和另一个文本字段(例如 1 和 1)中输入值时,第三个文本字段立即计算总和并显示它无需向 GUI 添加按钮? 最佳答案 向您的 TextField 添加一个文档
使用 ABCPDF 添加 TextField 相当简单: public FormField AddTextField(string inRect, string inName, string inTe
有两个文本字段(具有自动完成功能): Customer: Store: 如您所见,最初我禁用了第二个文本字段。我想要的是当用户完成从客户文本框中选择项目时,应该启用商店文本框。这是我尝试过
假设我有一个社交网络(例如: http://www.icloud.com/ )。该网站上有 2 个文本字段:电子邮件、密码。 我想为该网站制作一个应用程序,您可以直接从该应用程序登录。在应用程序上,我
在我的添加联系人页面中,正在验证我的电子邮件文本字段、电话号码字段等。并在单击所有其他文本字段时检查有效电子邮件。因此,当我单击电话号码字段时,它将检查电子邮件有效性并在电子邮件无效时显示警报 Vie
使用 TextField View 时,我的 SwiftUI 项目出现奇怪的行为。 使用以下代码,TextField textContentType 设置为 nil(或 .none,或 UITextC
我有一个 TextField 和一个 Text 小部件,它们应该实时显示在 TextField 中编写的文本。 这是代码: late final TextEditingController _imp
我有 2 个自动完成 UITextField这将在输入文本时触发表格 View 。其中一个我正在使用MVPlaceSearchTextField .我使用 this 自定义构建的另一个. 当我输入 t
我创建了一个函数,可以“映射”对象数组并使用该信息创建material-ui TextField 元素。当用户输入的字符超过 maxLength 时,我尝试输出错误消息。我想仅显示用户当前通过“onC
我是一名优秀的程序员,十分优秀!