小编Ami*_*mit的帖子

iPhone X键盘显示出额外的空间

我创建了一个聊天用户界面,我在其中添加了一个constraint用于tableView屏幕底部的.我正在通过添加键盘的高度来更改约束值,该键盘在除iPhone X之外的所有设备中都能正常工作.

键盘不可见时的UI:

在此输入图像描述

哪个好.

问题是当键盘出现空白区域在textView和键盘之间可见时:

在此输入图像描述

我是否必须为此尝试不同的方法,或者可以使用约束来解决它?

ios swift iphone-x

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

DispatchQueue:在非主线程上无法使用asCopy = NO调用

UIAlertController将主线程呈现为:

class HelperMethodClass: NSObject {

    class func showAlertMessage(message:String, viewController: UIViewController) {
        let alertMessage = UIAlertController(title: "", message: message, preferredStyle: .alert)

        let cancelAction = UIAlertAction(title: "Ok", style: .cancel)

        alertMessage.addAction(cancelAction)

        DispatchQueue.main.async {
            viewController.present(alertMessage, animated: true, completion: nil)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我从任何方面调用方法UIViewController:

HelperMethodClass.showAlertMessage(message: "Any Message", viewController: self)
Run Code Online (Sandbox Code Playgroud)

我正确地得到了输出.

但在控制台中,我收到以下消息:

[Assert]在非主线程上无法使用asCopy = NO调用.

我在这里做错了什么,或者我可以忽略这个消息?

编辑

感谢@NicolasMiari:

添加以下代码不会显示任何消息:

DispatchQueue.main.async {
    HelperMethodClass.showAlertMessage(message: "Any Message", viewController: self)
}
Run Code Online (Sandbox Code Playgroud)

之前它在控制台中显示消息的原因是什么?

grand-central-dispatch swift dispatch-queue swift4.2

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

iOS 9中的HTTPS请求:NSURLSession/NSURLConnection HTTP加载失败(kCFStreamErrorDomainSSL,-9802)

我正在更新我的应用以适应Apple的新ATS.如果没有对Plist-Info进行任何更改,以下代码会在vanilla`iOS sendSynchronousRequest()9模拟器中引发错误.

NSURL *url  =[NSURL URLWithString:@"https://Google.com"];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]init];
[request setHTTPMethod:@"GET"];
[request setURL:url];

NSURLResponse *urlResponse = nil;
NSError *error = nil;    
NSData *reponse = [NSURLConnection sendSynchronousRequest:request
                                        returningResponse:&urlResponse
                                                    error:&error];
Run Code Online (Sandbox Code Playgroud)

错误:

NSURLSession/NSURLConnection HTTP加载失败(kCFStreamErrorDomainSSL,-9802)

有关这个问题可能背后的想法吗?

Ps:据我所知,NSURLConnection已被弃用.但是如果我加入AllowArbitraryLoads,这个调用就可以找到Plist.

ios ios9

15
推荐指数
3
解决办法
3万
查看次数

对于UITableView,我是否需要实现trailingSwipeActionsConfigurationForRowAt和/或editActionsForRowAt?

推出iOS11 trailingSwipeActionsConfigurationForRowAt(并领先......).这是否意味着我现在必须实施

  1. 用于控制iOS11 AND的滑动的尾随/前导方法
  2. editActionsForRowAt 对于iOS10?

如何让模拟器运行iOS10模拟以查看我的应用程序在后台操作系统中的行为?由于现在一切都是iOS11,我不确定我的应用程序将在该版本中如何?

澄清:我想要对行进行操作,但我不想要iOS11中的默认行为performsFirstActionWithFullSwipe.如果我只是实现,editActionsForRowAt那么iOS11会完全滑动.

uitableview ios swift ios11

7
推荐指数
2
解决办法
4718
查看次数

如何为 tableview 上的 webview 内容启用 VoiceOver

通常,VoiceOver正确读取加载的网页内容,WKWebView并且可以读取按钮和链接。

但是,?当我说WKWebViewUITableViewCell,并显示在UITableVIewVoiceOver无法识别它。

根据苹果的tableview文档,为了让每个内容都分别UITableViewCell被识别VoiceOver,需要将isAccessibilityElementcell设置为false isAccessibilityElement,view设置为true。

但如果isAccesibilityElementofWKWebView设置为 true,视图本身是聚焦的,我们无法识别内部网页内容。

此外,VoiceOver在加载 Web 内容后第一次启用时,它执行了可以识别 Web 内容的奇怪行为。

怀疑是VoiceOver内容识别时序的问题,我试了一下运行

UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil)
Run Code Online (Sandbox Code Playgroud)

或者

UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, nil)
Run Code Online (Sandbox Code Playgroud)

加载网页内容后,却没有得到好的结果。

是否有处理内容的一个好办法wkwebviewtableViewVoiceOver

accessibility ios voiceover uiaccessibility swift

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

无法在 Swift 的 xcode UI 测试中使用 Alamofire

我遇到的问题是使用Alamofirexcode UI 测试。

\n\n

我已尽可能地将各个部分隔离开来,试图找出问题可能出在哪里,但仍然无法解决这个问题。通过使用 swift 的新 xcode 项目,我可以Alamofire按预期使用 mainViewController.swiftfunc viewDidLoad()函数,但是在创建 UI 测试时,我无法在函数中使用相同的代码func testExample()

\n\n

使用的工具版本:

\n\n
Xcode     = 9.2(9C40b)    \nSwift     = 4.0\ncocoapods = 1.4.0     \nmacOS     = High Sierra Version 10.13.2 (17C205)  \nAlamofire = 4.5    \n
Run Code Online (Sandbox Code Playgroud)\n\n

ViewController.swift - 工作正常

\n\n
import UIKit\nimport Alamofire\n\nclass ViewController: UIViewController {\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n        // Do any additional setup after loading the view, typically from a nib.\n\n        Alamofire.request("https://httpbin.org/get").responseJSON { response in\n            print("Request: …
Run Code Online (Sandbox Code Playgroud)

xcode cocoapods swift alamofire xcode-ui-testing

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

Firebase Android+WebApp。如何在 Webview 中将 Auth 从 Android 应用程序传递到 JavaScript

Firebase在我的Android应用程序中有一个经过身份验证的用户。WebviewAndroid加载HTML页面的同一个应用程序中,需要Firebase通过Javascript.

对于Webview访问Firebase数据库,需要在再次进行身份验证javascript。我可以使用signInWithCustomToken(),但AndroidApp 无法创建自定义令牌,每次都必须调用 Server 来创建CustomToken并将其传递给webview.

有什么办法可以将 Authentication From AndroidApp传递到Webview里面吗?

firebase firebase-authentication

5
推荐指数
0
解决办法
166
查看次数

iOS:如何选择并滚动到swift 3中collectionView中的特定单元格?

我想选择并滚动到一个特定indexPathcollectionView中心.我找到了这些功能,但不可能将它们组合起来:

collectionView.selectItem(at: indexPath, animated: true, scrollPosition: UICollectionViewScrollPosition.centeredVertically)
collectionView.scrollToItem(at: indexPath, at: .centeredHorizontally, animated: true)
collectionView.scrollToItem(at: indexPath, at: .centeredVertically, animated: true)
Run Code Online (Sandbox Code Playgroud)

提前致谢.

ios uicollectionview uicollectionviewcell swift swift3

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

适用于iOS 10 XCode 8.1 Swift 3.0的NavigationBar背景图片

如何设置此特定设置的背景图像?iOS10XCode8.1?我尝试了下面的一切:

UINavigationBar.appearance().setBackgroundImage(UIImage(named: "navigationBg")!.resizableImage(withCapInsets: UIEdgeInsetsMake(0, 0, 0, 0), resizingMode: .stretch), for: .default)
UINavigationBar.appearance().setBackgroundImage(UIImage(named: "navigationBg")! , for: .any, barMetrics: .default)
UINavigationBar.appearance().setBackgroundImage(UIImage(named: "navigationBg")! , for: .default)
Run Code Online (Sandbox Code Playgroud)

我能设置的颜色navigationBar使用storyboard,但不能设置图像.

uinavigationbar ios swift3

3
推荐指数
2
解决办法
8528
查看次数

从Stackview获取View的索引

我添加了2个stackview具有不同大小的视图。现在,当我单击任何视图的加号按钮时,我只想在该视图的正下方添加一个视图。

我正在通过以下方式查看:

let index = superView.subviews.index(of: view)
Run Code Online (Sandbox Code Playgroud)

然后我在做:

superView.insertArrangedSubview(newView, index + 1)
Run Code Online (Sandbox Code Playgroud)

但实际上它是在不同位置添加新视图。

因此,如果我尝试获取索引,.subview.index那么它将始终返回最后一个索引

ios swift uistackview

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