为了使UIView
所有视图都像行为一样UIAlertView
,我看到的最好的方法是将它放在应用程序窗口中,即将视图添加到:
[[[UIApplication sharedApplication] delegate] window]
Run Code Online (Sandbox Code Playgroud)
但是,我发现它的缺点是它不会自动进行旋转.为了使其轮流,最好的方法是在当前的AppDelegate window.navigationController
/ 上添加视图rootViewController
,但是,通过这样做,它将不再是所有内容.假设当显示视图并且有一个modalViewController弹出窗口时,模态视图肯定会掩盖视图.
我的问题是,是否可以将子视图添加到最顶层的窗口并支持方向?在这种情况下我需要两组Nib文件吗?如何UIAlertView
结合最顶层和定位支持的魔力?当我查看时UIAlertView.h
,我看到实际上有2个UIWindows
,一个叫originalWindow
,另一个叫dimWindow
.有没有可以找到源代码的地方UIAlertView.m
?
我正在处理的应用程序要求我确定一个单词的词性NSString
.
所以基本上你可以在Objective C中访问一个库/数据库/类,它可以检查单个单词(以a的形式NSString
)是名词,形容词,副词还是动词?
有点像:
NSString *foo="cat";
if ([foo wordIsNoun]) {
//do something
};
Run Code Online (Sandbox Code Playgroud)
在类似但稍微不相关的注释中,是否有可能检查两个NSString
包含相同词干但不同时态(问,询问,询问等)的动词是否具有相同的词干?它也非常有用.
我想响应触摸事件(特别是UIControlEventTouchUpInside
和UIControlEventTouchUpOutside
上一个) UITextField
,但那是通过唯一的事件UIControlEventTouchCancel
.
我不能使用UIControlEventEditingDidBegin
,因为它只发生在场增益聚焦时,这不是我想要检测的.无论当前的焦点状态如何,我想知道用户何时抬起他们的手指,以及它是在文本字段的内部还是外部.
有谁知道这样做的方法?
要清楚我已经尝试过使用addTarget:action:forControlEvents
它并不起作用.取消阻止了修饰事件.我想要一种方法来在消耗它之前检测到触摸UITextField
并产生Cancel事件.
另外,如果可能的话,我想避免创建任何额外的视图.
我试图UIActionSheet
在iPad上显示一个内置的UIPickerView
,我有相同的代码适用于iPhone,所以我的UIPickerView
代理和数据源的东西工作,但在我使用-[UIActionSheet showFromRect:inView:animated:]
结果的iPad上UIPopover
/ UIActionSheet
太小,我似乎无法设置帧大小,也不显示任何按钮.
我不知道这是因为它们是在界外还是还有其他事情发生.这是我删除所有非必要代码(iPhone等)后代码的样子.有人知道我做错了什么,有没有人知道任何例子.
CGRect thePickerFrame = CGRectMake(0, 0, 320.0, 485.0);
UIPickerView * thePickerView = [[UIPickerView alloc] initWithFrame:thePickerFrame];
[pickerActionSheet release], pickerActionSheet =
[[UIActionSheet alloc] initWithTitle:@"Choose" delegate:self
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:nil
otherButtonTitles:@"Next", nil];
thePickerView.showsSelectionIndicator = YES;
thePickerView.dataSource = self;
thePickerView.delegate = self;
[pickerActionSheet addSubview:thePickerView];
[thePickerView selectRow:0 inComponent:0 animated:NO];
[thePickerView release];
[pickerActionSheet showFromRect:currentTextField.bounds
inView:currentTextField animated:NO];
pickerActionSheet.frame = thePickerFrame;
Run Code Online (Sandbox Code Playgroud) 我想知道是否有一种方法可以动画第一个视图,UIPageViewController
以便它看起来像一个页面角落有点晃动?当你第一次到达这个特定的屏幕时,好像有一阵微风拂过页面.
这可以添加某种UI功能,以指示可以刷屏幕.我们正在显示的内容UIPageViewController
并不像书本那样占据整个屏幕,但是想让用户更清楚他们可以使用手势来横向导航.
任何的意见都将会有帮助.
是否可以使用iOS在我自己的应用程序中使用的原生指南针?或者我是否需要绘制自己的指南针并制作动画?
我objc_setAssociatedObject
在ARC下遇到了一个奇怪的行为.请考虑以下代码:
static char ASSOC_KEY;
@interface DeallocTester : NSObject
@end
@implementation DeallocTester
- (void) dealloc
{
NSLog(@"DeallocTester deallocated");
//objc_setAssociatedObject(self, &ASSOC_KEY, nil, OBJC_ASSOCIATION_RETAIN);
}
@end
@implementation AppDelegate
- (void) applicationDidFinishLaunching:(UIApplication *)application
{
NSObject *test = [[DeallocTester alloc] init];
objc_setAssociatedObject(test, &ASSOC_KEY, [[DeallocTester alloc] init],
OBJC_ASSOCIATION_RETAIN);
}
Run Code Online (Sandbox Code Playgroud)
我正在创建一个实例DeallocTester
,然后我将另一个设置DeallocTester
为关联对象,然后它们都超出了范围.
我希望-dealloc
第一个对象被调用,然后关联的对象也要被释放,但我看到"DeallocTester deallocated"
消息只打印一次.如果我取消注释该objc_setAssociatedObject
行-dealloc
,则第二个对象也会被取消分配.
Objective-C引用声明关联对象在对象销毁时自动解除分配.它是编译器/ ARC /任何问题还是我错过了什么?
更新
如果您从一个全新的项目运行它,这个示例代码实际上是有效的.但我有两个启用ARC的项目.我会做一些调查并提供更好的样本.
更新2
我正在做一个游戏,玩家用手指拖着船.我正在将Box2D用于游戏的物理方面.特别是,我正在使用b2MouseJoint
将触摸事件附加到船上以让触摸事件拖动船.
但有一个问题是,船在被拖动时的移动方式是不现实的; 它可以简单地在任何方向拖动,在现实世界中,船只只能沿着它的长度移动,并且会有防水性,这使得难以改变船只运动的方向.因此,我需要一种模拟防水性的方法,以使船只运动逼真.
可以在Box2D中模拟它吗?线性阻尼和角度阻尼简单地使船难以移动,但我只是希望船在一个方向上易于移动而且它应该只能抵抗改变方向.
PS我不认为我需要发布我的代码来解决这个问题,但是如果你想查看代码摘录,请告诉我.
我无法弄清楚如何NSDateFormatter
使用基于新视图在Interface Builder中设置静态文本表单元格视图NSTableViews
.由于问题与Interface Builder有关,以下是在Interface Builder中重新创建设置的步骤:
NSDateFormatter
在设置中创建一个,将日期样式设置为短样式NSDateFormatter
.我似乎总是得到默认的日期格式.如何将日期格式应用于表格中的日期?
我正在从视频文件中逐个获取帧缓冲AVAssetReader
,并对帧进行一些操作,然后使用AVAssetWritter
.将新帧保存到临时文件.现在我有临时文件路径,其中所有新帧都是逐个保存的.有没有什么方法可以在时间帧播放视频时不断添加到临时文件?
这里是从临时路径播放视频的代码(帧不断添加)
- (void)loadAssetFromFile {
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:[NSURL fileURLWithPath:[(mMediaReader.mCameraRecorder) tempVideoFilePath ]] options:nil];
NSString *tracksKey = @"tracks";
[asset loadValuesAsynchronouslyForKeys:[NSArray arrayWithObject:tracksKey] completionHandler:
^{
// Completion handler block.
dispatch_async(dispatch_get_main_queue(),
^{
NSError *error = nil;
AVKeyValueStatus status = [asset statusOfValueForKey:tracksKey error:&error];
if (status == AVKeyValueStatusLoaded) {
self.mPlayerItem = [AVPlayerItem playerItemWithAsset:asset];
[mPlayerItem addObserver:self forKeyPath:@"status"
options:0 context:&ItemStatusContext];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playerItemDidReachEnd:)
name:AVPlayerItemDidPlayToEndTimeNotification
object:mPlayerItem];
self.mPlayer = [AVPlayer playerWithPlayerItem:mPlayerItem];
[mPlayerView setPlayer:mPlayer];
[self play:nil];
}
else {
// You should deal with the …
Run Code Online (Sandbox Code Playgroud) ios ×6
iphone ×4
objective-c ×4
avplayer ×1
box2d ×1
box2d-iphone ×1
cocoa ×1
cocoa-touch ×1
ipad ×1
linguistics ×1
native ×1
osx-lion ×1
uialertview ×1
uitextfield ×1
uiview ×1
uiwindow ×1
xcode ×1