我认为我正在以模态方式显示以获取用户的登录信息。我有以下设置:
UITableViewController
UITextField
中的UITableViewCell
类型)和一个简单单元格作为登录按钮。UITextField
消息textFieldDidEndEditing:
读取值
问题
我的问题是,当焦点位于UITextField
且用户触摸登录按钮时,相应的UITextField
的{{1}}消息会在后发送 textFieldDidEndEditing:
。现在的问题是,我正在向didSelectRowAtIndexPath:
中的LoginViewControllerDelegate
发送新用户凭据的消息,此时文本字段的值尚未读取。
一些想法
我有一些想法如何解决这个问题,但我对每个问题都有疑问。
首先,我可以关闭登录视图,并在关闭期间通知委托,但我想给代表(拥有此登录视图的人)完全控制,我认为应该是委托的工作来关闭登录成功登录时查看(登录视图仅读取凭据,委托验证这些凭据)。
其次,我也可以在调用委托之前阅读用户名或密码,但之后我必须查找文本字段。如果视图不可见,我认为假设单元确实存在是错误的。这只是一个很大的问题,但我不想做对。保留didSelectRowAtIndexPath:
可以吗?但是,这样,我就无法使用一些自己提供文本字段的自定义单元格。
基本上我想要以下内容:
答案 0 :(得分:1)
在所有技巧之后我终于想到在调用委托之前简单地辞职第一响应者修复了这个。在表视图控制器中,我只需添加一个调用:
[[self.view findFirstResonder] resignFirstResponder];
findFirstResonder
来自某个类别,可以找到here。
答案 1 :(得分:0)
尝试此操作而不是使用第三个单元格作为登录按钮。在登录视图上使用简单按钮。在该按钮的IBAction上,您可以验证用户输入。
答案 2 :(得分:0)
您可以使用包含两个文本字段和一个UIButton的简单视图。按下按钮后,您可以通过[yourView removeFromSuperview]
从superview中删除视图。您可以从yourTextfield.text接收数据。
我想这必须要做的伎俩