我已经编写了自己的函数来在键盘出现时向上滚动文本字段。为了通过点击远离文本字段来关闭键盘,我创建了一个 UITapGestureRecognizer,它负责在点击离开时退出文本字段上的第一响应者。
但是,在选择自动完成表中的一个条目时,DidselectRoyatIndexpath也不会被调用。相反,似乎点击手势识别器正在被调用并且只是让第一响应者辞职。
我猜有一些方法可以告诉点击手势识别器继续将点击消息传递给 UITableView,但我不知道它是什么。在 objc 和 9 多年前关于堆栈溢出的帖子和帖子中只有解决方案,我想知道是否有更新的解决方案!谢谢,如果您想看看发生了什么,这是我的代码:
class ChatLogController : UIViewController, UITextFieldDelegate , UITableViewDelegate , UITableViewDataSource, UIGestureRecognizerDelegate, UIImagePickerControllerDelegate ,UINavigationControllerDelegate {
var messages = [Message]()
var user : User?{
didSet{
observeMessages()
}
}
@IBOutlet weak var tabelView: UITableView!
@IBOutlet weak var messageTextField: UITextField!
@IBOutlet weak var bottomViewHeightConstraint: NSLayoutConstraint!
@IBOutlet weak var currentMessageRecieverImage: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
configureTableView()
currentMessageRecieverImage.translatesAutoresizingMaskIntoConstraints = false;
currentMessageRecieverImage.layer.cornerRadius = 30;
currentMessageRecieverImage.layer.masksToBounds = true
currentMessageRecieverImage.contentMode = .scaleAspectFill
if let currentMessageRecieverUser = user{
currentMessageRecieverImage.loadImageUsingCacheWithUrlString(urlString: currentMessageRecieverUser.picURL!);
print(currentMessageRecieverUser.userName!) …Run Code Online (Sandbox Code Playgroud) 嘿伙计们,我已经四处搜索,但仍然找不到解决我的问题的方法。我在这里有一个自定义类:
import UIKit
/**
DatasourceController is simply a UICollectionViewController that
allows you to quickly create list views.
In order to render our items in your list, simply provide it with a
Datasource object.
*/
open class DatasourceController: UICollectionViewController,
UICollectionViewDelegateFlowLayout {
open let activityIndicatorView: UIActivityIndicatorView = {
let aiv = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge)
aiv.hidesWhenStopped = true
aiv.color = .black
return aiv
}()
open var datasource: Datasource? {
didSet {
if let cellClasses = datasource?.cellClasses() {
for cellClass in cellClasses {
collectionView?.register(cellClass, forCellWithReuseIdentifier: …Run Code Online (Sandbox Code Playgroud) 我想从我的应用程序中打开邮件,并在文本字段中填充“共享我的应用程序...”(底部的消息字段,而不是电话号码字段)
我可以使用以下代码从我的应用程序打开消息:
UIApplication.shared.open(URL(string: "sms:")!, options: [:], completionHandler: nil)
Run Code Online (Sandbox Code Playgroud)
但是我不知道该如何传递信息。可以代替使用MFMessageComposeViewController()来做到这一点吗?我无法将其用于我遇到的背景播放问题,谢谢。