小编Iva*_*ino的帖子

在 UITextView 中拖放时显示文本光标

我正在我的应用程序中实现拖放。

将应用拖放(主要是拖放)的主屏幕之一位于UITextView.

UITextView使用以下代码为此添加了一个放置交互:

    let dropInteraction = UIDropInteraction(delegate: self)     
    inputTextView.addInteraction(dropInteraction)
Run Code Online (Sandbox Code Playgroud)

通过这样做,我现在接受其中的下降。

为了只接受图像和文本作为 drop,我实现了以下委托方法:

func dropInteraction(_ interaction: UIDropInteraction, canHandle session: UIDropSession) -> Bool {
    return session.hasItemsConforming(toTypeIdentifiers: [kUTTypeImage as String, kUTTypeText as String]) && session.items.count == 1
}
Run Code Online (Sandbox Code Playgroud)

根据需要,我还实现了以下必需的委托方法来返回一个UIDropProposal

func dropInteraction(_ interaction: UIDropInteraction, sessionDidUpdate session: UIDropSession) -> UIDropProposal {
    let dropProposal: UIDropProposal = UIDropProposal(operation: .copy)
    dropProposal.isPrecise = true
    return dropProposal
}
Run Code Online (Sandbox Code Playgroud)

然后在 performDrop 委托方法中,我处理丢弃的内容并将其附加到 UITextView

func dropInteraction(_ interaction: UIDropInteraction, performDrop session: UIDropSession) {
    // Access the dropped …
Run Code Online (Sandbox Code Playgroud)

drag-and-drop uitextview ios swift

5
推荐指数
1
解决办法
1123
查看次数

iOS - 关闭在其视图之外触摸的呈现视图控制器

我有一个CustomPresentationController用自定义动画进出的动画;

这个特定的控制器被呈现,在屏幕尺寸的 50% 处更少,当我呈现它时,我添加了一个阴影灰色视图,presentingViewController所以它增加了一些深度。

presentedViewController如果我点击我调用默认方法的cancel按钮,我只能关闭。NavBardismiss(:)

我想要完成的是检测 外面的水龙头presentedViewController,也许在灰色区域内,这样我就可以解除presentedViewController,就像解除 ,ActionSheet但我没能做到。让我解释一下我到目前为止所做的尝试。

我试图UITapGestureRecognizer在阴影灰色视图中添加一个,但由于我展示了一个不同的控制器,应用引擎可能认为由于阴影视图不在顶层视图中,它可能无法访问,因此它“阻塞”识别器 - 每当我点击它时,手势手柄都不会触发。

我现在正在实施另外一个向下滑动以关闭,我可以很容易地做到这一点,但我真的希望tap-outside功能也能工作。

关于如何解决这个问题的任何提示?

应用程序图像如下:

截屏

ios uipresentationcontroller swift3 uipresentingcontroller

4
推荐指数
2
解决办法
7131
查看次数

致命错误:刷新表视图时索引超出范围

当拉到刷新时,我发现了这个奇怪的应用程序崩溃.

我的代码如下:

var posts: [Posts] = []

override func viewDidLoad() {
    super.viewDidLoad()

    // refreshControl -> pull to refresh handler
    let refreshControl = UIRefreshControl()
    refreshControl.addTarget(self,
                             action: #selector(Main_TVC.getData),
                             for: UIControlEvents.valueChanged)
    self.refreshControl = refreshControl

    getData()
}

override func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return posts.count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell",
                                             for: indexPath) as! PostsTableViewCell

    cell.titleLabel.text = …
Run Code Online (Sandbox Code Playgroud)

tableview ios pull-to-refresh swift3

3
推荐指数
1
解决办法
4731
查看次数

UICollectionView invalidateLayout 不会在屏幕方向更改时触发 sizeForItem

我有一个 UICollectionViewController 有一堆单元格,每个单元格都有屏幕大小。

如果我以纵向或横向方式启动应用程序,一切都会按预期进行。

问题是当我更改屏幕方向时,我称collectionViewLayout.invalidateLayout()单元格大小保持不变,而不调整它们的大小。

我不知道为什么会这样。

这是一些代码:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    print("size for item")
    return CGSize(width: view.frame.width, height: view.frame.height)
}


override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {
    coordinator.animate(alongsideTransition: { (_) in
        self.collectionViewLayout.invalidateLayout() // layout update
    }, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)

在第一次加载时,我从大小集获取打印,但在更改方向后,它不会调用它,因此当我更改方向时,单元格大小不适合屏幕,因为它适合启动。

任何想法可能导致这种情况或我在这里做错了什么?

谢谢

编辑

不知何故,我试图在willTransition函数中插入一个打印语句,但我注意到它不会在屏幕旋转时触发。我认为问题出在那里而不是invaldateLayout()因为它从不触发。

如何不自动调用此覆盖功能?

ios uicollectionview swift

3
推荐指数
1
解决办法
3388
查看次数

解析 CloudKit 错误 (CKError)

我正在使用 CloudKit 并且正在检查是否已经创建了特定区域。

对于这个例子,假设一个区域没有设置,所以 CloudKit 检索我一个CKError.

CKError有一个名为partialErrorsByItemIDwhich 类型的属性[AnyHashable : Error]?

这是代码:

fileprivate func checkIfZonesWereCreated() {
    let privateDB = CKContainer.default().privateCloudDatabase
    let op = CKFetchRecordZonesOperation(recordZoneIDs: [zoneID1, zoneID2])
    op.fetchRecordZonesCompletionBlock = { (dict, err) in
        if let err = err as? CKError, let _err = err.partialErrorsByItemID {                    
            print(_err) 
            /* prints 
            [AnyHashable(<CKRecordZoneID: 0x60800003cba0; ownerName=__defaultOwner__, zoneName=TestZone>): <CKError 0x60400005a760: "Zone Not Found" (26/2036); server message = "Zone 'TestZone' does not exist"; uuid = ...-2DF4E13F81E2; container ID = "iCloud.com.someContainer">]
            */

            // …
Run Code Online (Sandbox Code Playgroud)

ios swift cloudkit ckerror

3
推荐指数
1
解决办法
348
查看次数

出现UIAlertController时应用崩溃

尝试提供时,我的应用崩溃了UIAlertController

我有一个UIViewController模态呈现的,然后在该呈现的视图控制器上,当点击某个按钮时,我想呈现一个actionSheet警报。

执行此操作时,应用程序崩溃了,我无法弄清楚原因。

这是代码:

let alertController = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
alertController.addAction(UIAlertAction(title: "Image from Camera", style: .default, handler: { (_) in
    let cameraController = CameraController()
    self.present(cameraController, animated: true, completion: nil)
}))
alertController.addAction(UIAlertAction(title: "Image from Library", style: .default, handler: {(_) in
    let imagePickerController = UIImagePickerController()
    imagePickerController.delegate = self
    imagePickerController.allowsEditing = true
    self.present(imagePickerController, animated: true, completion: nil)
}))
alertController.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
alertController.view.tintColor = UIColor.rgb(red: 46, green: 94, blue: 120)
self.present(alertController, animated: …
Run Code Online (Sandbox Code Playgroud)

ios swift uialertcontroller ios11

2
推荐指数
1
解决办法
2395
查看次数

在Python中减去字母

我试图在Python中减去字母,但我不能以正确的方式做到这一点.

我知道如何得到ord这封信.

喜欢:

a = "a"
x = ord(a)   # -> this will give me 97.
Run Code Online (Sandbox Code Playgroud)

当我尝试从该字母中减去值时,得到的结果与我想要的完全不同.

如果我减去1b我得到的97(代表a),但现在我想减去14b,我想达到a,然后回去z,继续减法.

a = 97
b = 98
...
z = 122
Run Code Online (Sandbox Code Playgroud)

我想继续循环使用小写字母,它位于97和之间122.

例如,如果我减去14b,我得到的84,但我想这样做,我想获得的方式n.

b - 14 = a - 13 = z - 12 (...) and so on.
Run Code Online (Sandbox Code Playgroud)

我希望你能理解我的意思.

;)

有人能帮我一下吗 ?

此致,伊万.

python subtraction

1
推荐指数
1
解决办法
8128
查看次数

将淡入淡出效果应用于 UICollectionView 的顶部和底部

我已经阅读了这里的示例,但我无法按照我想要的方式进行操作,不知何故,我的渐变示例卡在屏幕中间,无法按预期工作。

我有一个UICollectionView用垂直滚动填充整个屏幕的。

我希望顶部和底部UICollectionView为黑色,中间为透明(因为我使用的是黑色 blackgroundColor)。

我尝试应用渐变,但不知何故我无法实现我想要的。

这是我的代码:

let gradient = CAGradientLayer()
gradient.frame = view.bounds
gradient.colors = [UIColor.black.cgColor, UIColor.clear.cgColor, UIColor.black.cgColor]
gradient.startPoint = CGPoint(x: 1, y: 0)
gradient.endPoint = CGPoint(x: 1, y: 1)
view.layer.mask = gradient
Run Code Online (Sandbox Code Playgroud)

上面的代码将渐变放置在屏幕中间,但相反。如果淡入全黑,则屏幕顶部和底部以及中间部分是透明的。

我正在尝试创建这样的东西:

图像

感谢您的帮助

calayer ios uicollectionview swift

1
推荐指数
1
解决办法
3737
查看次数

禁用WKWebView缩放

我有一个WKWebView我想禁用缩放.为此,我实现了UIScrollViewDelegate viewForZooming(_:)委托功能,其中我return nil如下:

func viewForZooming(in scrollView: UIScrollView) -> UIView? {
    return nil
}
Run Code Online (Sandbox Code Playgroud)

不知何故,WKWebView当我捏时仍然缩放,我不想要这种效果.

我已设置WKWebView isMultipleTouchEnabledfalse但仍然不会禁用缩放.

唯一一个禁用缩放的设置是isUserInteractionEnabled,false但有了这个我无法与内部的链接进行交互,WKWebView这不是理想的事情.

这就是我声明我的对象以及它是如何设置的方式

private lazy var webView: WKWebView = {
    // script to fit the content with the screen
    var scriptContent = "var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);"

    let wkuscript = WKUserScript(source: scriptContent, injectionTime: WKUserScriptInjectionTime.atDocumentEnd, forMainFrameOnly: true)
    let wkucontroller = WKUserContentController()
    wkucontroller.addUserScript(wkuscript)

    let wkwebconfig …
Run Code Online (Sandbox Code Playgroud)

ios swift wkwebview

1
推荐指数
1
解决办法
2725
查看次数

如果 UIImage 设置为 .scaleAspectFill,它会与标签重叠

我的应用程序从后端加载图像并将它们显示在 UITableViewCell 中,其中包含一个 UIImageView 来显示它以及一些标签和按钮。

我已使用“重置为建议的约束”选项将建议的约束添加到 UITableViewCell。

这是检索数据后的一些代码:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    var cell = PostTableViewCell()

    if (self.posts.count == 0) { return cell }

    let post = posts[indexPath.row]

    // Instancia o reuse identifier
    if post["post_image"] != nil {
        cell = tableView.dequeueReusableCell(withIdentifier: Storyboard.PostWithImage, for: indexPath) as! PostTableViewCell
    } else {
        cell = tableView.dequeueReusableCell(withIdentifier: Storyboard.PostWithoutImage, for: indexPath) as! PostTableViewCell
    }
    return cell
}


override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    var …
Run Code Online (Sandbox Code Playgroud)

uitableview uiimageview uiimage ios swift3

0
推荐指数
1
解决办法
650
查看次数