如何在UITextView中有效地find可见词的CGRects?

我的目标是在UITextView中标记所有可见的拼写错误的单词。 效率低下的algorithm是使用拼写检查器来查找文本拼写错误的单词的所有范围,使用positionFromPosition:inDirection:offset等将它们转换为UITextRange对象,然后使用UITextInput方法firstRectFromRange获取graphics矩形。 因此,所有的文字 – >拼写错误的单词 – > NSRange集合 – > UITextRange集合 – > CGRect集合 – >评估可见性,绘制可见的 问题是这需要检查所有文本,并且所有拼写错误的单词都转换为graphics矩形。 因此,我想要走的路是以某种方式找出UITextView中底层.text的哪些部分是可见的。 因此,文本的可见范围 – >拼写错误的单词 – > NSRange集合 – > UITextRange集合 – > CGRect集合 – >评估可见性,绘制可见的 在iOS中的代码- 如何findUITextView中的文本的可见范围? 可能会作为一种方法来约束文本的哪些部分进行检查,但仍然要求所有的文本都是测量的,我想这可能是相当昂贵的。 有什么build议么?

iOS开发人员学习Mac编程的技巧

随着苹果宣布Mac App Store,我将学习Mac编程。 我通常是那些在Cocoa Programming for Mac OS X书籍之前阅读“ Beginning iPhone 3 Development”一书的人之一。 我购买MacBook的原因是因为Xcode只能在OS X上运行。那么,对于现在的iOS程序员来说,Mac OS新手又有什么build议呢? 谢谢! 一个提示一个答案请(作为社区维基)

从iOS获取反向地理编码当前位置的最简单方法

我在这里看到另一个问题: 确定iPhone用户的国家 ,可以得到iPhone的用户所在的国家 。 这对于许多用途来说相当方便。 然而,是否有可能更深入地从iOS推断出(如果有信息的话)用户所在的州或城市呢? 如果事情不可能,我认为反向地理编码服务将是下一个步骤。是否有甚至可以为您的应用程序聘用的反向地理编码服务?

永远在后台运行一个Swift 2.0应用程序来更新位置到服务器

我写了下面的代码,它有一个每分钟调用一次callback函数的计时器。 当应用程序进入后台,我已经启动了另一个计时器,调用相同的callback方法,但后台计时器只能工作三分钟。 我明白,苹果允许后台任务只有三分钟。 我的应用程序更像是一个跟踪应用程序,即使应用程序在后台,也能跟踪用户的位置,所以我需要实现此function。 我了解到beginBackgroundTaskWithExpirationHandler是要使用的,但我不知道我的实现是否正确。 注意:我在plist toApp注册了位置更新所需的后台模式。 任何工作代码或链接非常感谢。 override func viewDidLoad() { super.viewDidLoad() timeInMinutes = 1 * 60 self.locationManager.requestAlwaysAuthorization() self.locationManager.requestWhenInUseAuthorization() if CLLocationManager.locationServicesEnabled() { locationManager.delegate = self locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters locationManager.startUpdatingLocation() } var timer = NSTimer.scheduledTimerWithTimeInterval( timeInMinutes, target: self, selector: "updateLocation", userInfo: nil, repeats: true) } func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]){ let locValue:CLLocationCoordinate2D = manager.location!.coordinate […]

我怎样才能消除方法调用?

我正在尝试使用UISearchView来查询谷歌的地方。 这样做,在我的UISearchBar文本更改调用,我正在向谷歌地方的请求。 问题是我宁愿去掉这个呼叫,每250毫秒只请求一次,以避免不必要的networkingstream量。 我宁愿不自己写这个function,但如果我需要,我会。 我发现: https : //gist.github.com/ShamylZakariya/54ee03228d955f458389 ,但我不太清楚如何使用它: func debounce( delay:NSTimeInterval, #queue:dispatch_queue_t, action: (()->()) ) -> ()->() { var lastFireTime:dispatch_time_t = 0 let dispatchDelay = Int64(delay * Double(NSEC_PER_SEC)) return { lastFireTime = dispatch_time(DISPATCH_TIME_NOW,0) dispatch_after( dispatch_time( DISPATCH_TIME_NOW, dispatchDelay ), queue) { let now = dispatch_time(DISPATCH_TIME_NOW,0) let when = dispatch_time(lastFireTime, dispatchDelay) if now >= when { […]

是否有可能使用video作为纹理GL在iOS?

在iOS中,是否可以使用video(预渲染,用H.264压缩)作为纹理? 如果可能,怎么做? 和任何播放质量/帧率或限制?

iOS上的外设和中央

我到处看,并尝试了一切 ,但似乎没有工作:( 在iOS上,我正在制作iOS设备需要交换数据的应用程序(适用于iOS 6及更高版本)。 因此, 两个设备需要同时处于外设和中央。 我完全按照WWDCvideo中的规定完成,但设备无法相互成功连接。 当我只有一个设备只有中央和另一个只有外围设备,中央无缝连接到外围设备。 但是,当两个设备同时处于外设和中心位置时,我会得到随机错误:在任何阶段(发现服务/特性或将通知值设置为YES )有时会发生错误,有时discoverServices甚至不会调用didDiscoverServices 有什么不同的我应该做的? 我只是将外设和中央代码合并到一个视图控制器中。 我注意到,如果设备“a”连接到设备“b”, 然后设备“b”连接到设备“a”,则其工作经常不是。 我通过使用NSThread sleepForTimeInterval:来pipe理这个NSThread sleepForTimeInterval:手动为每个设备上不同的时间量,但我怎么能得到一个设备先连接(然后其他)在一个可靠的(而不是手动预定义)的方式? 如果我得到错误,通常他们只是Unknown error 请让我知道如果你需要任何代码或任何其他信息:)

即使将UIViewControllerBasedStatusBarAppearance设置为NO,状态栏也可以在iPad mini上看到

我有一个UIViewControllerBasedStatusBarAppearance设置为NO的iPhone应用程序。 不是在我testing过的任何设备上(iPhone 4,5,5s,5c,iPad 4ish)都可以看到状态栏。 除了iPad mini(第一代)之外。 使用iOS SDK是7.1。 状态栏在iPad mini 1st Gen上可见。 我期望状态栏也隐藏在这个设置上。 我甚至尝试添加[[UIApplication sharedApplication] setStatusBarHidden:NO]; didFinishLaunchingWithOptions但它没有改变任何东西。 状态栏样式也设置为“在应用程序启动过程中隐藏”。 iPad mini运行iOS 7.1。 是的,这是一个边缘案例,但我不能得到这个预期的结果。 还有一点信息:我使用的是cocos2d-iphone v2.1。 从来没有遇到过这个问题,因为我已经发布了一堆具有相同引擎的应用程序。 我开始认为这是一个与组合相关的bug:iOS 7.1和iPad mini。 这是设置:

2个iOS设备之间的蓝牙连接

我正在尝试在iOS 5.0中引入的核心蓝牙框架 。 根据StackOverflow本身的许multithreading( 很多 ): 核心蓝牙框架可用于与具有蓝牙低功耗(4.0)硬件支持的任何硬件进行通信。 如果您正在使用Core蓝牙技术,我们可以忘记Made For iPhone / iPod(MFI)程序。 我有一个iPhone 5,iPhone 4S,谷歌Android Nexus 7与我,我敢肯定,至less有第一个2硬件支持BLE。 我的问题是 那么,我试着在我的iPhone 4S / iPhone 5上给定的代码下面,但它没有扫描,并find附近的iPhone5 / iPhone 4S。 我可以确认,两个设备都已经打开了蓝牙。 didDiscoverPeripheral方法didDiscoverPeripheral永远不会被调用。 可能是什么原因? 我错过了什么吗? 这是我的代码(剥离到一个小testing项目)。 ViewController.h @interface ViewController:UIViewController<CBCentralManagerDelegate, CBPeripheralDelegate{ } @property (strong, nonatomic) CBCentralManager *mCentralManager; @end ViewController.m @implementation ViewController @synthesize mCentralManager; – (void)viewDidLoad{ [super viewDidLoad]; mCentralManager = [[CBCentralManager alloc]initWithDelegate:self […]

我可以使用AVAudioEngine从文件中读取,处理audio单元并写入文件,比实时更快吗?

我正在使用一个iOS应用程序,使用AVAudioEngine来处理各种事情,包括将audiologging到文件,使用audio单元对该audio应用效果以及播放应用了效果的audio。 我使用一个水龙头也写输出到一个文件。 当这完成后,它会在audio播放时实时写入文件。 是否可以设置一个AVAudioEnginegraphics来读取文件,用audio单元处理声音,然后输出到文件,但比实时更快(即,硬件可以像处理它一样快)? 这个用例应该是输出几分钟的音效,而且我肯定不会等待几分钟才能处理。 编辑:这里是我用来设置AVAudioEngine的graphics,并播放声音文件的代码: AVAudioEngine* engine = [[AVAudioEngine alloc] init]; AVAudioPlayerNode* player = [[AVAudioPlayerNode alloc] init]; [engine attachNode:player]; self.player = player; self.engine = engine; if (!self.distortionEffect) { self.distortionEffect = [[AVAudioUnitDistortion alloc] init]; [self.engine attachNode:self.distortionEffect]; [self.engine connect:self.player to:self.distortionEffect format:[self.distortionEffect outputFormatForBus:0]]; AVAudioMixerNode* mixer = [self.engine mainMixerNode]; [self.engine connect:self.distortionEffect to:mixer format:[mixer outputFormatForBus:0]]; } [self.distortionEffect loadFactoryPreset:AVAudioUnitDistortionPresetDrumsBitBrush]; NSError* […]