标签: selector

iOS - 如何使用多个参数和afterDelay实现performSelector?

我是一个iOS新手.我有一个选择器方法如下 -

- (void) fooFirstInput:(NSString*) first secondInput:(NSString*) second
{

}
Run Code Online (Sandbox Code Playgroud)

我正在尝试实现这样的东西 -

[self performSelector:@selector(fooFirstInput:secondInput:) withObject:@"first" withObject:@"second" afterDelay:15.0];
Run Code Online (Sandbox Code Playgroud)

但这给了我一个错误说 -

Instance method -performSelector:withObject:withObject:afterDelay: not found
Run Code Online (Sandbox Code Playgroud)

关于我缺少什么的任何想法?

iphone selector ios performselector

89
推荐指数
6
解决办法
9万
查看次数

Android:选择器中未显示的禁用按钮的textColor?

我正在尝试使用选择器创建一个按钮,我的按钮可以具有以下状态:

  • 启用/禁用
  • 按下/未按下

根据上述状态.我需要操纵按钮:

  • 文字颜色
  • 背景图片

该按钮从我被禁用开始,因此它应该具有禁用的textColor和禁用的按钮背景.但我可以看到默认的textColor(在样式中指定)和没有背景图像!

这是我的选择器button_selector.xml

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="false"
        android:state_enabled="false"
        android:textColor="#9D9FA2"
        android:drawable="@drawable/button" />    

    <item android:state_pressed="true"
        android:state_enabled="true"
        android:drawable="@drawable/button_pressed"/>

    <item android:state_pressed="true"
        android:state_enabled="false"
        android:textColor="#9D9FA2"
        android:drawable="@drawable/button"/>

    <item android:state_pressed="false"
        android:state_enabled="true"
        android:drawable="@drawable/button"/>    

</selector>
Run Code Online (Sandbox Code Playgroud)

这是我的layout.xml中的按钮声明

    <Button android:id="@+id/reserve_button"
        android:text="@string/reserve_button"
        android:layout_width="120dp"
        android:layout_height="40dp"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="20dp"
        android:paddingRight="15dp"
        android:layout_gravity="left"
        style="@style/buttonStyle"
        android:background="@drawable/button_selector" />
Run Code Online (Sandbox Code Playgroud)

最后这是我的风格(我的默认textColor设置)

<?xml version="1.0" encoding="utf-8"?>

 <resources>

     <style name="buttonStyle">
      <item name="android:textStyle">bold</item>
      <item name="android:textColor">#282780</item>
      <item name="android:textSize">18sp</item>
     </style>

</resources>
Run Code Online (Sandbox Code Playgroud)

请帮忙!

xml android button background-image selector

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

如何创建"选择器阵列"

我正在使用iPhone SDK(3.0),我正在尝试创建一个选择器数组,以在一个类中调用各种方法.

显然,我做错了(我认为@selector不被认为是一个类,因此将它们填充到NSArray中是行不通的).

我试过这个,但这显然是错的.

有一个简单的方法来拥有这样的选择器数组吗?或者是否有更好的方法来迭代一组方法?

selectors = [NSArray arrayWithObjects:
                          @selector(method1),
                          @selector(method2),
                          @selector(method3),
                          @selector(method4),
                          @selector(method5),
                          @selector(method6),
                          @selector(method7), nil];

for (int i = 0; i < [selectors count]; i++) {
    if ([self performSelector:[selectors objectAtIndex:i]]) // do stuff;
}
Run Code Online (Sandbox Code Playgroud)

objective-c selector nsarray ios

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

方法和选择器之间有什么区别?

Objective-C中方法,选择器和消息之间的区别是什么?

objective-c selector

78
推荐指数
2
解决办法
2万
查看次数

如何同时为Button应用形状和选择器?

我已经为按钮应用了一个形状,如:

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle" >
    <gradient android:startColor="#DD000000" android:endColor="#DD2d2d2d"  android:angle="90"></gradient>
    <corners android:radius="15dip"></corners>

</shape>
Run Code Online (Sandbox Code Playgroud)

现在我想使用一个选择器,如:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/active"
      android:state_pressed="true" />
<item android:drawable="@drawable/passive"/>
Run Code Online (Sandbox Code Playgroud)

对于这个按钮也是如此.可能吗 ...???

android button selector

74
推荐指数
4
解决办法
6万
查看次数

何时在swift代码中使用@objc?

我是swift的新手,我看到一些方法,如:

@objc private func doubleTapGestureRecognized(recognizer: UITapGestureRecognizer)
Run Code Online (Sandbox Code Playgroud)

我想知道什么时候使用@objc?我读了一些文档,但是他们说当你希望它在Objective-C中可以调用时,你应该添加@objc标志

但是,这是一个快速的私有函数,@ obj做了什么?

private objective-c selector ios swift

74
推荐指数
5
解决办法
4万
查看次数

尝试在iOS中处理"后退"导航按钮操作

我需要检测用户何时点击导航栏上的"后退"按钮,以便在发生这种情况时执行某些操作.我正在尝试手动将动作设置为这样的按钮,这样:

[self.navigationItem.backBarButtonItem setAction:@selector(performBackNavigation:)];

- (void)performBackNavigation:(id)sender
{
   // Do operations

   [self.navigationController popViewControllerAnimated:NO];
}
Run Code Online (Sandbox Code Playgroud)

我首先将该代码放在视图控制器本身中,但我发现它self.navigationItem.backBarButtonItem似乎是nil,所以我将相同的代码移动到父视图控制器,后者将前者推送到导航堆栈.但我无法让它发挥作用.我已经阅读了一些关于这个问题的帖子,其中一些人说需要在父视图控制器上设置选择器,但对我来说它无论如何都不起作用......我怎么可能做错了?

谢谢

selector uinavigationbar uinavigationcontroller ios

71
推荐指数
5
解决办法
12万
查看次数

如何使用Swift #selector语法解决"模糊使用"编译错误?

[ 注意这个问题最初是在Swift 2.2下制定的.它已针对Swift 4进行了修订,涉及两个重要的语言更改:第一个方法参数external不再自动被抑制,并且选择器必须显式地暴露给Objective-C.

假设我的课程中有这两种方法:

@objc func test() {}
@objc func test(_ sender:AnyObject?) {}
Run Code Online (Sandbox Code Playgroud)

现在我想使用Swift 2.2的新#selector语法来创建一个与这些方法中的一个相对应的选择器func test().我该怎么做?当我尝试这个:

let selector = #selector(test) // error
Run Code Online (Sandbox Code Playgroud)

......我得到一个错误,"模糊地使用test()." 但如果我这样说:

let selector = #selector(test(_:)) // ok, but...
Run Code Online (Sandbox Code Playgroud)

......错误消失了,但我现在指的是错误的方法,一个参数的方法.我想引用没有任何参数的那个.我该怎么做?

[注意:这个例子不是人为的.NSObject有Objective-C copycopy:实例方法,Swift copy()copy(sender:AnyObject?); 所以问题很容易在现实生活中出现.]

selector swift

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

将参数传递给NSTimer调用的方法

如何将参数传递给NSTimer调用的方法?我的计时器看起来像这样:

[NSTimer scheduledTimerWithTimeInterval:4 target:self selector:@selector(updateBusLocation) userInfo:nil repeats:YES];
Run Code Online (Sandbox Code Playgroud)

我希望能够将字符串传递给方法updateBusLocation.另外,我应该在哪里定义updateBusLocation方法?在我创建计时器的同一个.m文件中?

编辑:

其实我还有问题.我收到错误消息:

由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' * - [MapKitDisplayViewController updateBusLocation]:无法识别的选择器发送到实例0x4623600'

这是我的代码:

- (IBAction) showBus {

//do something

[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateBusLocation) userInfo:txtFieldData repeats:YES];
[txtFieldData release];
 }


 - (void) updateBusLocation:(NSTimer*)theTimer
 {
      NSLog(@"timer method was called");
      NSString *txtFieldData = [[NSString alloc] initWithString:(NSString*)[theTimer userInfo]];
if(txtFieldData == busNum.text) {
    //do something else
    }
    }
Run Code Online (Sandbox Code Playgroud)

编辑#2:没关系,您的示例代码可以正常工作,感谢您的帮助.

cocoa-touch objective-c selector nstimer

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

如何在焦点/按下时更改ImageButton的色调

我有一个ImageButton在我的应用程序,我需要在按钮时更改图像的色调pressed/focused.我有一个从XML文件ImageButton获取它的集合,src如下所示:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- pressed -->
    <item 
        android:state_pressed="true"
        android:tint="@color/black"
        android:drawable="@drawable/search"
        />

    <!-- focused -->
    <item 
        android:state_focused="true"
        android:tint="@color/black"
        android:drawable="@drawable/search"
        />

    <!-- default -->
    <item
        android:tint="@null"
        android:drawable="@drawable/search"
        />

</selector>
Run Code Online (Sandbox Code Playgroud)

但是,ImageButton按下或聚焦时不会应用色调- 图像只显示正常.黑色一直定义为黑色#000000.有任何想法吗?

android image tint selector imagebutton

57
推荐指数
4
解决办法
9万
查看次数