我以编程方式创建了一个搜索栏,并使用以下代码添加到我的视图中:
- (void)viewDidLoad
{
searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(xPositionForSearchBar, yPositionForSearchBar, widthForSearchBar, heightForSearchBar)];
UIView *bg = [[searchBar subviews] objectAtIndex:0];
searchBar.delegate = self;
searchBar.placeholder = @"Search record";
for(UIView *view in searchBar.subviews){
if([view isKindOfClass:[UITextField class]]){
UITextField *tf = (UITextField *)view;
tf.delegate = self;
break;
}
}
[bg removeFromSuperview];
[self.view addSubview: searchBar];
}
Run Code Online (Sandbox Code Playgroud)
该代码使用UISearchBarDelegate和UITextFieldDelegate实现.
我试过用
- (void)searchBarCancelButtonClicked:(UISearchBar *)aSearchBar
{
NSLog(@"cancel clicked");
searchBar.text = @"";
[aSearchBar resignFirstResponder];
}
- (BOOL)textFieldShouldClear:(UITextField *)textField
{
NSLog(@"clear");
[self performSelector:@selector(searchBarCancelButtonClicked:) withObject:searchBar afterDelay: 0.1];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
然而,当我点击"清除按钮" - 里面有一个"X"的圆圈时,searchBar里面的文字根本就没有被清除.
当我在IB中实现它时,清除按钮有效.想知道为什么? …
我需要弄清楚如何设置MKMapSnapshotterOptions来拍摄与地球多边形区域相关的空中/卫星图像的快照.
填写'region','scale','size'和'mapType'属性是微不足道的,因为我有一个MKPolygon可以使用.棘手的部分是设置'相机' - 在我的特定情况下,我使用MKMapSnapshotter独立于MKMapView(实际上,甚至不在主线程上).
但是,我更倾向于定位快照,使其符合基于非零标题的多边形边界 - 也就是说,我正在拍摄的区域具有'开始'和'结束',我想从结果图像的底部到顶部定向.由于多边形基本上永远不会在0度标题上自然定向,因此我需要确定'centerCoordinate','heading'和'altitude'.
由于我有多边形的坐标,我能够相当容易地导出中心坐标和所需的标题 - 多边形的第一个坐标与形状的"开始"和结束(或者我的情况下的其他坐标)相关联到最后'.
确定海拔高度证明更加困难; 我想确保多边形区域最终填满我想要显示的快照图像的宽高比.如何在不依赖MKMapView的'setRegion'选择器的情况下计算与MKMapCamera一起使用的正确高度?
mapkit ios mkmaprect cllocationcoordinate2d mkmapsnapshotter
我想支持动态类型但仅限于某个限制,类似于Settings.app,其中标准UITableViewCells可以增长UIContentSizeCategoryAccessibilityExtraExtraLarge但不大.
有没有一种简单的方法来实现标准的UITableViewCell样式?
我在我的区域遇到问题,因为MapKit没有下载最后一组磁贴(很可能是因为它不存在),但问题是,它不是只显示以前的磁贴,而是实际删除!瓷砖并没有显示任何内容.
在我达到最大变焦之前,图像如下图所示:

下图显示了当达到最大变焦时瓷砖的显示方式:

有人可以告诉你是否有办法阻止iOS MapKit试图以缩放方式下载没有图像的图块?谢谢!
我正在使用UIPopoverPresentationControlleriOS应用程序中的popovers.当它出现时,我想调暗popover背后的背景.我怎样才能做到这一点?在某个地方是否有API,或者当我出现弹片时,我是否必须在主视图上叠加一些内容?
我正在CMDeviceMotion使用本答案中描述的CMDeviceMotion扩展将SceneKit相机设置为当前姿态:
func deviceDidMove(motion: CMDeviceMotion?, error: NSError?) {
if let motion = motion {
let orientation = motion.gaze(atOrientation: UIApplication.sharedApplication().statusBarOrientation)
cameraNode.orientation = orientation
}
}
Run Code Online (Sandbox Code Playgroud)
这很漂亮,但是,我想阻止旋转(滚动)并且只允许相机转动(偏转)和俯仰.
我试图将四元数转换回欧拉角,并将roll保持为0:
cameraNode.eulerAngles = SCNVector3(
x: orientation.pitch(),
y: orientation.yaw(),
z: 0)
Run Code Online (Sandbox Code Playgroud)
然而,这仅适用于偏航运动的一半.另一半,相机倒置.我怀疑这是涉及欧拉角的万向节锁定问题.
四元数对我来说有点像黑魔法,但是有没有办法直接在四元数上去除滚动分量,这样我就可以避免欧拉角?
我正在为我的应用程序添加一个设置包作为一种在我的首选项上获取GUI的便宜方式.是否可以从我的应用程序中的按钮启动它,或者我的用户是否总是必须通过内置设置应用程序手动访问它?
使用iPhone上的Settings.app并不难.事实上,Xcode为您完成了大部分工作.只需将Settings.bundle添加到您的项目中即可,几乎不需要任何费用.
目前我正在为iPhone开发一个应用程序,要求用户填写几个"表单",主要是键值对,一些滑块和几个带有"下拉"菜单的模态视图.如此相似的任务类似于Settings.app所做的.
在我看来,自己做表格是一项繁重的任务,所以我想知道是否有这种任务的框架.不幸的是,Apple似乎没有提供自己的解决方案.也许有人知道网络上描述最佳实践的框架或文章.
如果您不了解我所指的模式,我制作了截图:http://img.skitch.com/20090625-s8bf6ahybwe3cesd1id38h3nt.jpg
我有一些相当复杂的规则来移动行中的行UITableView.每个部分有不确定数量的部分和行,并且根据各种规则,行可以在用户的部分内或部分之间移动到特定的其他位置.
所有数据更新,一切正常.但偶尔,在移动一行之后,应用程序将退出并突然出现一个空白区域,应该显示一行.
我正在使用:
- (NSIndexPath *)tableView:(UITableView *)tableView
targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath
Run Code Online (Sandbox Code Playgroud)
指定允许用户根据单元格的位置拖动行的位置.98%的工作时间.但在某些情况下,当只允许用户在各部分之间拖动时(无法对部分内的行重新排序)会出现此错误,然后在没有行的区域上滚动浏览器后应用程序崩溃.
抛出的异常非常无用:
由于未捕获的异常'NSRangeException'而终止应用程序,原因:'*** - [NSCFArray objectAtIndex:]:index(6)超出边界(6)
我的代码都没有在堆栈中.最后一个特定于UITableView的方法是
-[UITableView(UITableViewInternal) _visibleCellForGlobalRow:]
有人看过这个问题之前发生过吗?有任何想法吗?
我正在调试崩溃,其中非主线程使用UIKit绘图方法.我想在-[UIView layoutSubviews]只有触发器上设置一个条件断点,如果它在非主线程中执行的话.这可能吗?
ios ×9
iphone ×6
cocoa-touch ×5
uikit ×3
mapkit ×2
breakpoints ×1
camera ×1
core-motion ×1
forms ×1
key-value ×1
mkmaprect ×1
mkmapview ×1
objective-c ×1
quaternions ×1
scenekit ×1
settings ×1
uisearchbar ×1
uitableview ×1
xcode ×1